Submission #2529928
Source Code Expand
#include<iostream> using ll = long long; #define MAX_N 201010 using namespace std; ll par_way[MAX_N],r_way[MAX_N]; ll par_train[MAX_N],r_train[MAX_N]; void init_way(ll n){ for(ll i=0;i<n;i++){ par_way[i] = i; r_way[i] = 0; } } ll find_way(ll x){ if(par_way[x] == x){ return x; }else{ return par_way[x] = find_way(par_way[x]); } } void unite_way(ll x,ll y){ x = find_way(x); y = find_way(y); if(x==y) return; if(r_way[x]<r_way[y]){ par_way[x] = y; } else{ par_way[y] = x; if(r_way[x] == r_way[y]) r_way[x]++; } } void init_train(ll n){ for(ll i=0;i<n;i++){ par_train[i] = i; r_train[i] = 0; } } ll find_train(ll x){ if(par_train[x] == x){ return x; }else{ return par_train[x] = find_train(par_train[x]); } } void unite_train(ll x,ll y){ x = find_train(x); y = find_train(y); if(x==y) return; if(r_train[x]<r_train[y]){ par_train[x] = y; } else{ par_train[y] = x; if(r_train[x] == r_train[y]) r_train[x]++; } } bool same(ll x,ll y){ return (find_train(x) == find_train(y))&&(find_way(x) == find_wat(y)); } int main(void){ ll N,K,L,x,y; cin >> N >> K >> L; init_train(N);init_way(N); while(K--){ cin >> x >> y; unite_way(x,y); } while(L--){ cin >> x >> y; unite_train(x,y); } for(ll i=1;i<=N;i++){ ll ans=0; for(ll j=1;j<=N;j++){ if(same(i,j)) ans++; } cout << ans; if(i!=N) cout << ' '; } cout << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Connectivity |
User | thash |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1508 Byte |
Status | CE |
Compile Error
./Main.cpp: In function ‘bool same(ll, ll)’: ./Main.cpp:67:69: error: ‘find_wat’ was not declared in this scope return (find_train(x) == find_train(y))&&(find_way(x) == find_wat(y)); ^