标签:struct efi title des put tin start names continue
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 26976 Accepted Submission(s): 6213
Input
1 #include<iostream> 2 #include<cstdlib> 3 #include<string.h> 4 #include<stdio.h> 5 #include<cstring> 6 #include<algorithm> 7 #include<climits> 8 #include<math.h> 9 #include<vector> 10 #include<cstdio> 11 using namespace std; 12 #define maxn 100005 13 int visit[maxn]; 14 int father[maxn]; 15 int cic; 16 int ding; 17 int edge; 18 void init() 19 { 20 for(int i=1;i<=maxn;i++) 21 visit[i]=0,father[i]=i; 22 ding=0;edge=0; 23 } 24 int find(int x) 25 { 26 if(father[x]==x)return x; 27 else find(father[x]); 28 } 29 30 void man(int a,int b) 31 { 32 int x,y; 33 x=find(a); 34 y=find(b); 35 if(x!=y) 36 father[x]=y; 37 } 38 int main() 39 { 40 int a,b,t=1,p; 41 while(1) 42 { 43 init(); 44 p=0; 45 cin>>a>>b; 46 if(a==0&&b==0) 47 {cout<<"Case "<<t<<" is a tree."<<endl;continue;} 48 if(a<0&&b<0)break; 49 man(a,b); 50 visit[a]=1; 51 visit[b]=2; 52 edge++; 53 while(1) 54 { 55 cin>>a>>b; 56 if(a==0&&b==0)break; 57 visit[a]=1; 58 if(visit[b]==2)p=1; 59 else visit[b]=2; 60 edge++; 61 man(a,b); 62 } 63 for(int i=1;i<=maxn;i++) 64 if(visit[i]!=0)ding++; 65 if(ding-1==edge&&!p)cout<<"Case "<<t<<" is a tree."<<endl; 66 else cout<<"Case "<<t<<" is not a tree."<<endl; 67 t++; 68 } 69 return 0; 70 }
HDU-1325&&POJ-1308 Is It A Tree?(基础并查集)
标签:struct efi title des put tin start names continue
原文地址:http://www.cnblogs.com/SparkPhoneix/p/8016427.html