[TIOJ] 1312.家族

雖然有一點煩(連續輸入我看漏了),但只是裸裸的dsu題(模板+1/0)
據說我是題目連結(?  https://tioj.ck.tp.edu.tw/problems/1312

#pragma gcc optimize("o2")
#include<bits/stdc++.h>
#define int long long int 
#define IOS ios_base::sync_with_stdio(false)
#define TO cin.tie(NULL)
using namespace std;
struct disjointset 
{
    int mem[10005],rank[10005];
    void init(int num)
    {
        for(int i=0;i<=num;i++)
        {
            mem[i]=i;
            rank[i]=0;
        }
    }
    int find(int N)
    {
        if(mem[N]==N) return N;
        return mem[N]=find(mem[N]);
    }
    int same(int a,int b)
    {
        return find(a)==find(b);
    } 
    void Union(int l,int r)
    {
        if(!same(l,r))
        {
            if(find(l)<find(r)) swap(l,r);
            mem[find(l)]=find(r);
            rank[find(l)]+=find(r);
        }
    }
};
signed main()
{
    IOS;TO;
    int n,m,a,b,k;
    struct disjointset dsu;
    while(cin >> n >> m)
    {
        dsu.init(n);
        for(int i=0;i<m;i++)
        {
            cin >> a >> b;
            dsu.Union(a,b);
        }
    cin >> k;
    cout << dsu.find(k) <<'\n';
    }
} 

留言

這個網誌中的熱門文章

[ZJ] b229: TOI 2009 第一題:路徑問題

交大資工(APCS組)(面試&心得)

滿是挫傷的ION CAMP