标签:des style blog http color os io java strong
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 14525 Accepted Submission(s): 3232
/* 6 8 5 3 5 2 6 4 5 6 0 0 8 1 7 3 6 2 8 9 7 5 7 4 7 8 7 6 0 0 3 8 6 8 6 4 5 3 5 6 5 2 0 0 1 2 3 2 4 2 5 2 0 0 1 2 3 4 4 3 0 0 0 0 1 1 0 0 1 2 2 1 0 0 1 2 2 3 3 4 4 1 0 0 1 2 2 3 3 1 5 6 0 0 2 3 0 0 -1 -1 */
答案:
/* Case 1 is a tree. Case 2 is a tree. Case 3 is not a tree. Case 4 is not a tree. Case 5 is not a tree. Case 6 is a tree. Case 7 is not a tree. Case 8 is not a tree. Case 9 is not a tree. Case 10 is not a tree. Case 11 is a tree. */
代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> bool hasp[10000]; struct node{ int father,rank; }; node root[10000]; void init(){ int i; root[0].rank=0; root[0].father=0; for(i=1;i<10000;i++){ root[i].father=i; root[i].rank=1; } } int find(int a){ while(a!=root[a].father) a=root[a].father; return a; } void Union(int a,int b){ /*a->b*/ root[b].father=a; root[a].rank+=root[b].rank; } int main(){ freopen("test.in","r",stdin); //system("call test.in"); int a,b,cnt,x,y,cas=1,tem; bool flag; while(1){ flag=false; //初始化为无环 memset(hasp,0,sizeof(hasp)); tem=cnt=0; init(); while(scanf("%d%d",&a,&b)&&(a+b!=0)){ if(a+b<0) return 0; if(!flag) { x=find(a); y=find(b); if(x==y) flag=1; else Union(a,b); if(tem==0) tem=a; if(!hasp[a]) hasp[a]=1 , cnt++ ; if(!hasp[b]) hasp[b]=1 , cnt++ ; } } /* cnt记录了点的个数 */ if(root[find(tem)].rank==cnt&&!flag) printf("Case %d is a tree.\n",cas++); else printf("Case %d is not a tree.\n",cas++); } return 0; }
hdu---(1325)Is It A Tree?(并查集)
标签:des style blog http color os io java strong
原文地址:http://www.cnblogs.com/gongxijun/p/3954398.html