# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
381621 | 2021-03-25T11:14:04 Z | ritul_kr_singh | Game (IOI14_game) | C++17 | 0 ms | 0 KB |
#include "game.h" #include "bits/stdc++.h" using namespace std; vector<int> e; int find(int u){ return e[u] < 0 ? u : e[u] = find(e[u]); } int sz(int u){ return -e[find(u)]; } void unite(int u, int v){ u = find(u), v = find(v); if(u==v) return; if(e[u] > e[v]) swap(u, v); e[u] += e[v], e[v] = u; } void initialize(int n){ e.assign(n+1, -1); } int hasEdge(int u, int v){ if(find(u)==find(v) or sz(u)+sz(v)<n){ unite(u, v); return 1; } return 0; }