• 洛谷 P2078 朋友(并查集)


    【题目信息】

    洛谷 P2078 朋友(并查集)

    【审题】

    1.只能异性恋

    2.两个公司只有小红小明认识

    3.朋友的朋友是朋友

    【分析】

    这是一道很简单的并查集模板题。由“【审题】3”可知,直接把有关系的都放在一个集合里,然后找到同时有小明和小红的集合,输出该集合中男女人数中较小的一个。

    【心路历程】

    没看题解的时候,一直在纠结如何找到男女重合人数最多的集合,直到看到第一个题解,才发现,能同时有男有女的集合只能有一个,就是小明小红所在集合。
    所以压根不用去遍历每个集合,直接输出即可。

    【代码】

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,p,q;
    map<int,int>fa;
    int find(int x)
    {
        if(fa[x]==x) return x;
        return fa[x]=find(fa[x]);
    }
    void merge(int x,int y)
    {
        x=find(x),y=find(y);
        if(x!=y)
        {
            fa[x]=find(fa[y]);
        }
    }
    
    int main()
    {
        int x,y;
        scanf("%d %d %d %d",&n,&m,&p,&q);
        for(int i=-1*m;i<=n;i++) fa[i]=i;
        for(int i=1;i<=p+q;i++)
        {
            scanf("%d %d",&x,&y);
            merge(x,y);
        }
        int to1=0,to2=0; 
        for(int i=-1*m;i<=-1;i++)
        {
            if(find(fa[i])==find(-1)) to1++;
        }
        for(int j=-1*m;j<=n;j++)
        {
            if(find(fa[j])==find(1)) to2++ ;
        }
        printf("%d",min(to1,to2));
        return 0; 
    }

    每日一句:

    You cannot blame the gravity for falling in love.

  • 相关阅读:
    Nginx
    Nginx & AWStats 安装、配置、使用
    Nginx
    linux
    工作中的 Vim 和 git
    后端
    django
    django
    awk流程控制
    linux系统内置函数
  • 原文地址:https://www.cnblogs.com/TheZealous/p/15190176.html
Copyright © 2020-2023  润新知