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

    试题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1004

    题目分析:

    讲述的主要是是否可以通过公交直接到达自己的目的地,如果最后将问题转换为并查集后就可以发现其实就是问在自己构造的这棵树中,他们的根节点是否是相同的。

    主要的注意是在输入的时候要求两个两个的处理,简单并且节省空间。

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    int fa[101];
    
    //用来寻找并且合并根节点的函数
    int find(int x){
        int a = x;
        while(fa[x]!=x){
            x = fa[x];
        }
        fa[a] = x;              //将根节点的信息记录在最开始的那个点中
        return x;
    }
    
    int Union(int x,int y){
        int a = find(x);
        int b = find(y);
    
        if(a!=b)fa[a] = b;
    }
    
    int main()
    {
        int t,cars;
        scanf("%d",&t);
        while(t--){
        int start,end,m,tian,xia;
        scanf("%d%d",&start,&end);
        //现在是要求要有多少的空间来保存公交车的路线信息呢?
        scanf("%d",&cars);
    
        for(int i = 1;i <=100;i++){
            fa[i] = i;
        }
        for(int j = 0;j < cars;j++){
        cin>>m>>tian;
         for(int i=1;i<m;i++)
                {
                    cin>>xia;
                    Union(tian,xia);
                }
        }
            if(find(start)!=find(end))
                cout<<"No"<<endl;
            else
                cout<<"Yes"<<endl;
    
        }
    
        return 0;
    }
    View Code
    我要坚持一年,一年后的成功才是我想要的。
  • 相关阅读:
    CVE-2019-0708
    windows powershell的常用命令
    sqli-lab(8)
    DVWA--CSP Bypass
    认清自己
    sqli-libs(7)
    DVWA--upload
    sqli-labs(6)
    python学习之路(22)
    BZOJ2434:[NOI2011]阿狸的打字机——题解
  • 原文地址:https://www.cnblogs.com/tianxia2s/p/3890456.html
Copyright © 2011-2022 走看看