zoukankan      html  css  js  c++  java
  • 洛谷P1892 团伙

    SDSC Day 3的题.(的弱化版
    这题算是一个并查集的板子题。
    答题思路:
    对每个点i建立i+n这个点
    是朋友进入一个并查集
    不是的话把x,y+n x+n,y这两个并查集连接起来
    很简单的思路。
    C++代码:

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <string>
    #include <queue>
    #include <algorithm>
    #include <string>
    #define INF 0x3f3f3f3f
    #define inf 0x3f
    #define maxn 200001
    #define maxm 10001
    #define ll long long
    using namespace std;
    int n, m, fa[maxn], x, y;
    char p;
    void clear()
    {
        for (int i = 1; i <= n; i++)
        {
            fa[i] = i;
        }
    }
    int find(int x)
    {
        if (fa[x] == x)
            return x;
        return fa[x] = find(fa[x]);
    }
    void merge(int x, int y)
    {
        int xx = find(x);
        int yy = find(y);
        if (xx == yy)
            return;
        fa[xx] = yy;
    }
    int ener[201010];
    
    int main()
    {
        memset(ener, 0, sizeof(ener));
        cin >> n >> m;
        clear();
        for (int i = 1; i <= m; i++)
        {
            std::string str;
            cin >> str >> x >> y;
            p = str[0];
            if (p == 'F')
                merge(x, y);
            else
            {
                if (ener[x] == 0)
                {
                    ener[x] = find(y);
                }
                else
                    merge(y, ener[x]);
                if (ener[y] == 0)
                    ener[y] = find(x);
                else
                    merge(x, ener[y]);
            }
        }
        int ans = 0;
        int sum[maxn];
        memset(sum, 0, sizeof(sum));
        for (int i = 1; i <= n; i++)
        {
            if (find(i) != 0)
                sum[find(i)]++;
        }
        for (int i = 1; i <= n; i++)
        {
            if (sum[i])
                ans++;
        }
        cout << ans;
        return 0;
    }
  • 相关阅读:
    Java内部类详解
    浅谈Java中的深拷贝和浅拷贝(转载)
    native为本地方法
    Java NIO:NIO概述
    Java NIO:浅析I/O模型
    Hash表
    浅谈Java中的hashcode方法
    spring boot学习(转)
    Spring Boot修改内置Tomcat端口号
    K8S
  • 原文地址:https://www.cnblogs.com/kenlig/p/9433029.html
Copyright © 2011-2022 走看看