제출 #931306

#제출 시각아이디문제언어결과실행 시간메모리
931306_fractal게임 (IOI14_game)C++14
0 / 100
3 ms4700 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1501; int p[N], sz[N]; int cnt[N][N], n; int get(int v){ return (p[v] == v ? v : (p[v] = get(p[v]))); } void unite(int a, int b){ a = get(a); b = get(b); if(a == b) return; if(sz[a] > sz[b]) swap(a, b); p[a] = b; sz[b] += sz[a]; for(int i = 1; i <= n; i++){ if (p[i] == i && i != b && i != a) { cnt[b][i] += cnt[a][i]; cnt[i][b] += cnt[a][i]; } else { assert(cnt[a][i] == 0); assert(cnt[i][a] == 0); } } } void initialize(int sa){ n = sa; for(int i = 1; i <= n; i++){ p[i] = i; sz[i] = 1; } } int hasEdge(int u, int v){ u = get(u); v = get(v); if(sz[u] * sz[v] - 1 == cnt[v][u]){ unite(u, v); return 1; }else{ cnt[v][u]++; cnt[u][v]++; return 0; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...