Submission #7123061


Source Code Expand

Copy
#include <bits/stdc++.h>
#define ll long long
#define rep(i,n) for(ll (i)=0;(i)<(n);++(i))
using namespace std;

struct union_find_tree{
    vector<long long> par;
    vector<long long> rank;
    union_find_tree(long long n){
        init(n);
    }

    void init(long long n){
        for(long long i=0;i<n;i++){
            par.push_back(i);
            rank.push_back(0);
        }
    }

    long long find(long long a){
        if(par[a]==a)return a;
        return par[a]=find(par[a]);
    }

    void unite(long long a,long long b){
        long long root_a=find(a);
        long long root_b=find(b);
        if(root_a==root_b)return;
        if(rank[root_a]<rank[root_b]){
            par[root_a]=root_b;
        }else if(rank[root_a]>rank[root_b]){
            par[root_b]=root_a;
        }else{
            par[root_a]=root_b;
            rank[root_a]++;
        }
    }

    bool same(long long a,long long b){
        return find(a) == find(b);
    }

};

int main(){
    ll n,q;
    cin>>n>>q;
    union_find_tree uft(n);
    rep(i,q){
        ll p,a,b;
        cin>>p>>a>>b;
        if(p==0){
            uft.unite(a,b);
        }else{
            if(uft.same(a,b)){
                cout<<"Yes"<<endl;
            }else{
                cout<<"No"<<endl;
            }
        }
    }
}

Submission Info

Submission Time
Task B - Union Find
User miotsukushi
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1363 Byte
Status
Exec Time 457 ms
Memory 2668 KB

Judge Result

Set Name Score / Max Score Test Cases
Sample 0 / 0 00_sample_01.txt
All 100 / 100 00_sample_01.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt
Case Name Status Exec Time Memory
00_sample_01.txt 1 ms 256 KB
subtask_01_01.txt 271 ms 896 KB
subtask_01_02.txt 3 ms 2036 KB
subtask_01_03.txt 411 ms 1024 KB
subtask_01_04.txt 450 ms 2668 KB
subtask_01_05.txt 24 ms 256 KB
subtask_01_06.txt 26 ms 2036 KB
subtask_01_07.txt 422 ms 896 KB
subtask_01_08.txt 452 ms 2668 KB
subtask_01_09.txt 1 ms 256 KB
subtask_01_10.txt 3 ms 2036 KB
subtask_01_11.txt 403 ms 896 KB
subtask_01_12.txt 450 ms 2668 KB
subtask_01_13.txt 345 ms 768 KB
subtask_01_14.txt 4 ms 2036 KB
subtask_01_15.txt 409 ms 896 KB
subtask_01_16.txt 457 ms 2668 KB
subtask_01_17.txt 309 ms 2412 KB
subtask_01_18.txt 304 ms 2412 KB