Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
哪位大牛帮我看一下……discuss里的数据都通过了,还是WA,贴下代码……#include<stdio.h> #include<string.h> #define inf 0x3f3f3f3f int u[100010]; int degree[100010]; int pd(int x) { if(u[x]!=x) u[x]=pd(u[x]); return u[x]; } int main() { int a,b; bool mark=1; int k=1,i; for(i=0;i<100010;i++) u[i]=i; memset(degree,inf,sizeof(degree)); int num; while(scanf("%d%d",&a,&b)) { if(a==-1&&b==-1) break; else if(a==0&&b==0) { num=0; for(i=0;i<100010;i++) if(degree[i]==0) num++; if(mark==1&&num==1) printf("Case %d is a tree.\n",k++); else printf("Case %d is not a tree.\n",k++); for(i=0;i<100010;i++) u[i]=i; mark=1; memset(degree,inf,sizeof(degree)); } else { if(pd(a)!=pd(b)&&mark==1) { u[pd(a)]=pd(b); if(degree[a]==inf) degree[a]=0; else degree[b]=1; } else mark=0; } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator