zoukankan      html  css  js  c++  java
  • 并查集

    好久没有写 并查集的程序了。。  这个 并查集的模板题

    #include<iostream>
    using namespace std;
        int p[100002],v[100002],u[100002],q[100002];
    int f(int n)
    {
        return p[n]==n?n:p[n]=f(p[n]);
    }

    int main()
    {
    int i,j,n,m;
        while(1)
        {
            
            scanf("%d%d",&u[0],&v[0]);
            if(u[0]==-1&&v[0]==-1)
                break;
            if(u[0]==0&&v[0]==0)
            {
                printf("Yes\n");
                getchar();
                continue;
            }
            i=1;    memset(q,0,sizeof(q)); q[u[0]]=1; q[v[0]]=1;

            while(1)
            {
                scanf("%d%d",&u[i],&v[i]);
                if(u[i]==0&&v[i]==0)
                {
                    getchar();
                    break;
                }
                q[u[i]]=1; q[v[i]]=1;
                
                i++;
            }
            for(int num=0,j=0;j<100002;j++)
                if(q[j])
                    num++;
                if(num!=i+1)
                {
                    printf("No\n");
                    continue;
                }
            for(j=0;j<100002;j++)
                p[j]=j;
        

            for(j=0;j<i;j++)
            {
                int a=f(u[j]);
                int b=f(v[j]);
                if(a!=b)
                    p[b]=a;
                else
                {
                    printf("No\n");
                    break;
                }
            }
            if(j==i)
             printf("Yes\n");
        }
        return 0;
    }
                
            

  • 相关阅读:
    Java基础-集合框架的学习大纲
    Java多线程并发学习-进阶大纲
    Spring学习大纲
    Netty学习大纲
    分布式学习大纲
    数据库学习大纲
    缓存学习大纲
    JVM-jvm学习大纲(0)
    多线程学习-基础(十三)(学习参考·网摘) ArrayBlockingQueue源代碼解析(base jdk 1.8)
    C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法
  • 原文地址:https://www.cnblogs.com/assult/p/3100271.html
Copyright © 2011-2022 走看看