Submission #4481595


Source Code Expand

#include<bits/stdc++.h>
using namespace std;

//////// kokokara

class UnionFind {
public:
    vector<int> parent;
    UnionFind(int n) {
        par=vector<int>(n,-1);
    }

    int root(int a) {
        if (par[a]<0) return a;
        return par[a] = root(par[a]);
    }

    int size(int a) {
        return -par[root(a)];
    }

    //頂点結合
    bool con(int a, int b) {
        a=root(a);
        b=root(b);
        if (a==b) return false;
        if (size(a)<size(b)) swap(a,b);
        par[a]+=par[b];
        par[b]=a;
        return true;
    }
};

//////// kokomade


///test https://atc001.contest.atcoder.jp/tasks/unionfind_a
int main(){
    int n,q,p,a,b;
    scanf("%d %d",&n,&q);
    UnionFind uf(n); //n個頂点で初期状態用意
    for (int i=0;i<q;i++) {
        scanf("%d %d %d",&p,&a,&b);
        if (p==0) {
            uf.con(a,b);
        } else {
            a=uf.root(a);
            b=uf.root(b);
            printf("%s\n",a==b?"Yes":"No");
        }
    }
    return 0;
}

Submission Info

Submission Time
Task B - Union Find
User nyon
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1062 Byte
Status CE

Compile Error

./Main.cpp: In constructor ‘UnionFind::UnionFind(int)’:
./Main.cpp:10:9: error: ‘par’ was not declared in this scope
         par=vector<int>(n,-1);
         ^
./Main.cpp: In member function ‘int UnionFind::root(int)’:
./Main.cpp:14:13: error: ‘par’ was not declared in this scope
         if (par[a]<0) return a;
             ^
./Main.cpp:15:16: error: ‘par’ was not declared in this scope
         return par[a] = root(par[a]);
                ^
./Main.cpp: In member function ‘int UnionFind::size(int)’:
./Main.cpp:19:17: error: ‘par’ was not declared in this scope
         return -par[root(a)];
                 ^
./Main.cpp: In member function ‘bool UnionFind::con(int, int)’:
./Main.cpp:28:9: error: ‘par’ was not declared in this scope
         par[a]+=par[b];
         ^
./Main.cpp: In function ‘int main()’:
./Main.cpp:40:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d",&n,&q);
                         ^
./...