• L2-1 分而治之


    思路

    这题的意思是,如果把这些点打掉,其他的点是否能够完全不连通。

    用并查集,或者打上标记之后,判断每个点是否还能到达其他点,如果一个点可以到达其他任何点,都应该输出否。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn=1e4+10;
    int x[maxn],y[maxn],pre[maxn];
    
    void init(int n) {
        for (int i=1;i<=n;i++) {
            pre[i]=i;
        }
    }
    
    int getBlock(int n){
        int res=0;
        for (int i=1;i<=n;i++) {
            if (pre[i]==i) {
                res++;
            }
        }
        return res;
    }
    
    inline int find(int x) {
        if (pre[x]==x) {
            return x;
        }
        return pre[x]=find(pre[x]);
    }
    
    void unions(int x,int y) {
        int fx=find(x);
        int fy=find(y);
        if (fx!=fy) {
            pre[fx]=fy;
        }
    }
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for (int i=0;i<m;i++) {
            scanf("%d%d",&x[i],&y[i]);
        }
        int k,p,tmp;
        scanf("%d",&k);
        while (k--) {
            unordered_map<int,int> cache;
            scanf("%d",&p);
            while (p--) {
                scanf("%d",&tmp);
                cache[tmp]=1;
            }
            init(n);
            for (int i=0;i<n;i++) {
                if (!(cache[x[i]]||cache[y[i]])) {
                    unions(x[i],y[i]);
                }
            }
            int ans=getBlock(n);
            if (ans==n) {
                printf("YES
    ");
            }
            else {
                printf("NO
    ");
            }
        }
        return 0;
    }
    
    
  • 相关阅读:
    如何配置寄存器
    逻辑分析仪的使用
    CAN中如何计算波特率并配置波特率
    led不同颜色的驱动电压和驱动电流
    ULINK2配置
    电机加减速转动
    2N7002
    未添加时钟文件产生报错
    烟雾传感器
    Strategy 设计模式 策略模式 超靠谱原代码讲解
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/12337441.html
Copyright © 2020-2023  润新知