• POJ 1611 The Suspects (并查集)


    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
    int vis_tuan[500+10];
    int vis[30000+10];
    int mat[30000+10][510];
    int fa[30000+10];
    int ans;
    int n,m;
    int find(int x)
    {
        return fa[x]==x?x:find(fa[x]);
    }
    
    void bin(int x,int y)  //前小后大
    {
        int fx=find(x);
        int fy=find(y);
        if(fx!=fy)
        {
           // printf("x %d fx %d y %d fy %d
    ",x,fx,y,fy);
           // printf("%d %d
    ",vis[fx],vis[fy]);
    
           if(fy==0)
           {
               vis[fy]+=vis[fx];
               fa[fx]=fa[fy];
           }
           else
           {
               vis[fx]+=vis[fy];
               fa[fy]=fa[fx];
           }
        }
    }
    
    int main()
    {
    
        int i,j,k;
        while(scanf("%d%d",&n,&m),n+m)
        {
            ans=0;
            int ok=0;
            //memset(vis_tuan,0,sizeof(vis_tuan));
            memset(vis,0,sizeof(vis));
    
            for(i=0;i<=n;i++)
            {
                vis[i]=1;
                fa[i]=i;
            }
    
            for(i=0;i<m;i++)
            {
                scanf("%d",&mat[i][0]);
                int tlen=mat[i][0];
                for(j=1;j<=tlen;j++)
                {
                    scanf("%d",&mat[i][j]);
                    if(mat[i][j]==0) ok=1;
                }
                sort(mat[i]+1,mat[i]+tlen+1);
    
                for(j=2;j<=tlen;j++)
                {
                    //printf("  %d ",mat[i][j]);
                    bin(mat[i][1],mat[i][j]);
                }
                //printf("
    ");
            }
    
    
            printf("%d
    ",vis[0]);
    
    
    
    
    
            /*if(ok==1)
            {
               int ret=0;
            for(i=0;i<n;i++)
            {
                if(find(i)==0) ret++;
            }
            printf("%d
    ",ret);
            }
            else
                printf("0
    ");*/
        }
        return 0;
    }
    
  • 相关阅读:
    <转载>c#多线程:线程池和异步编程
    <转载>讲故事谈.NET委托:一个C#睡前故事
    IIS 7.0 成员管理配置
    呵呵,新开博!
    PHP函数中文文档
    请不要做浮躁的人对程序员的忠告
    php新闻发布完成
    JS调试工具
    PHP配置FCKEditor
    ACEGI配置总结(1)
  • 原文地址:https://www.cnblogs.com/sola1994/p/4693020.html
Copyright © 2020-2023  润新知