| ||||||||||
| 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 | |||||||||
为什么会WA,无语了,实在想不出有什么漏洞,哪位大哥帮我看看?#include "stdio.h"
#include "memory.h"
int s[100010]={0},root[100010]={0};
int fd(int n)
{
if(root[n]==0) { root[n]=n;return n;}
int i=n;
while(i!=root[i])
root[i]=root[root[i]],i=root[i];
root[n]=i;
return i;
}
int nn(int i,int j)
{
int a1,a2;
a1=fd(i),a2=fd(j);
if(a1<a2) { root[i]=a1,root[j]=a1;}
else { root[i]=a2,root[j]=a2;}
return 0;
}
int main(void)
{
int cs,n,m,i,j,a,b;
char ch;
scanf("%d",&cs);
while(cs>0){
cs--;
memset(s,0,sizeof(s));
memset(root,0,sizeof(root));
scanf("%d%d",&n,&m);
for(i=0;i<m;i++){
gets(&ch);
scanf("%c",&ch);
scanf("%d%d",&a,&b);
if(ch=='D'){
if(s[a]==0)
s[a]=b;
else
nn(s[a],b);
if(s[b]==0)
s[b]=a;
else
nn(a,s[b]);
}
else
{
if(fd(a)==fd(b))
printf("In the same gang.\n");
else
if(s[a]&&fd(s[a])==fd(b)||s[b]&&fd(s[b])==fd(a))
printf("In different gangs.\n");
else
printf("Not sure yet.\n");
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator