标签:other clu actions ++ 阅读 ons one time ports
2 3 3 1 2 2 3 1 3 4 2 1 2 3 4
No suspicious bugs found!
http://blog.csdn.net/shuangde800/article/details/7974664
这位大佬写的向量偏移非常阅读后这题就非常容易了;
就是他写的方程有点奇怪;
我自己觉得是这样的:
aa->bb=(-delta[a]+d-1+delta[b])%3;
a->b=(delta[a]-delta[b])%3;
这题题意用一组数据来说明吧
1 2;2 3;
1 3
1和2是异性,2和3也是异性,也就是1和3是同性,但是他有将a 和b是异性。出现了bug;
1 #include <cstring> 2 #include<stdio.h> 3 int p[55000]; 4 int f[55000];//i的根节点到i的偏移量 5 int flag; 6 7 int findi(int x) 8 { 9 if(p[x]==x) 10 return x; 11 int t=p[x]; 12 p[x]=findi(p[x]); 13 f[x]=(f[x]+f[t])%2; 14 return p[x]; 15 } 16 void unioni(int x,int y) 17 { 18 int fx=findi(x); 19 int fy=findi(y); 20 p[fx]=fy; 21 f[fx]=(f[y]-f[x]+1)%2; 22 return ; 23 } 24 25 int main (){ 26 int t; 27 28 scanf("%d",&t); 29 int k=1; 30 while(t--) 31 { 32 flag=0; 33 int n,m; 34 scanf("%d%d",&n,&m); 35 for(int i=1;i<=n;++i){ 36 p[i]=i; 37 f[i]=0; 38 } 39 int a,b; 40 while(m--){ 41 scanf("%d%d",&a,&b); 42 int fa=findi(a); 43 int fb=findi(b); 44 if(fa==fb){ 45 if(f[a]==f[b]) 46 flag=1; 47 } 48 else unioni(a,b); 49 } 50 if(flag) 51 printf("Scenario #%d:\nSuspicious bugs found!\n\n",k++); 52 else 53 printf("Scenario #%d:\nNo suspicious bugs found!\n\n",k++); 54 } 55 return 0; 56 }
标签:other clu actions ++ 阅读 ons one time ports
原文地址:http://www.cnblogs.com/2014slx/p/7233441.html