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); ^ ./...