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 |
1703跟某同学得AC的代码几乎都一样了。。。还是WA。。求指点#include<stdio.h> int d[100000],f[100000],re[500000]={0};//d[]储存敌人,f[]储存朋友。 void set(int n){//初始化 int i; for(i=1;i<=n;i++){ d[i]=0; f[i]=i; } } int find(int i){//找朋友 if(f[i]!=i) f[i]=find(f[i]); return f[i]; } void unoin(int rx,int ry){//连接朋友 f[rx]=ry; } main() { int t,n,m,a,b,i,j,k=0; char ch; scanf("%d",&t); for(i=0;i<=t-1;i++){ scanf("%d%d",&n,&m); set(n); for(j=0;j<=m-1;j++){ getchar(); scanf("%c%d%d",&ch,&a,&b); if(ch=='A'){ if(find(a)==find(b))//如果有相同的根为朋友。 printf("In the same gang.\n"); else{ if(d[a]!=0 && d[b]!=0){ if(find(d[a])==find(b))//如果a的敌人是b的朋友,则 a,b为敌人。 printf("In different gangs.\n"); else//其他为不确定 printf("Not sure yet.\n"); } else printf("Not sure yet.\n"); } } else{//ch==D if(d[a]!=b && d[a]!=0) unoin(find(d[a]),find(b)); else{ if(d[b]!=0 && d[b]!=a)//调试时弄出了D 1 3/D 2 3/A 1 2 unoin(find(d[b]),find(a)); } d[a]=b; d[b]=a; } } } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator