设为首页 加入收藏

TOP

POJ 1611 The Suspects(特别无语的并查集)
2015-07-20 17:54:03 】 浏览:5243
Tags:POJ 1611 The Suspects 特别 查集

很简单的一道题目,开始用的是并查集的分离集合森林做,不知道怎么的特别不稳定,太奇怪了,WA无数次,无奈之下改成一维数组了。。sad

AC

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #define PI acos(-1,0) using namespace std; const int maxn = 30010; const int maxm = 100001; #define lson left, m, id<<1 #define rson m+1, right, id<<1|1 #define min(a,b) (a>b)b:a #define max(a,b) (a>b)a:b using namespace std; int father[50000]; int num[50000],n,m; int Find(int r) { int i = r,j; while(father[r]!=r) { r=father[r]; } while(father[i]!=r) { j = father[i]; father[i] = r; i = j; } return r; } void init() { for(int i = 0;i < n;i++) { father[i] = i; num[i] = 1; } } void Merge(int l,int b) { int y = Find(b); if(l != y) { father[y] = l; num[l] += num[y]; } } int main() { int j,k,l; while(~scanf("%d%d",&n,&m)) { if(n==0 && m==0) break; init(); int b; while(m--) { scanf("%d%d",&k,&l); int x = Find(l); for(j = 1;j < k;j++) { scanf("%d",&b); Merge(x,b); } } printf("%d\n",num[Find(0)]); } return 0; } 
       
      
     
    
   
  


WA

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #define PI acos(-1,0) using namespace std; const int maxn = 30010; const int maxm = 100001; #define lson left, m, id<<1 #define rson m+1, right, id<<1|1 #define min(a,b) (a>b)b:a #define max(a,b) (a>b)a:b using namespace std; struct node { int zhi , parent; } T[maxn]; int Find(int x) { return (x == T[x].parent)  x : Find(T[x].parent); } void Merge(int x,int y) { int fx,fy; fx = Find(x); fy = Find(y); if(fx!=fy) { T[fy].parent = fx; T[fx].zhi += T[fy].zhi; } } int main() { int m,n,k; while (~scanf("%d%d",&n,&m)) { if (n==0 && m==0) break; for(int j = 0; j
        
         
5 3
1 2
2 0 1
3 1 4 5

answer 3

有时是正确结果,有时不是,特别无语啊。



3

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇两个数组a[N],b[N],其中A[N]的.. 下一篇hdu 4950 Monster

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目