# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
349720 | 2021-01-18T09:23:11 Z | Pety | Game (IOI14_game) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; int n, sz[2000], p[2000], cnt[2000][2000]; int find (int x) { if (p[x] == x) return x; return p[x] = find(p[x]); } void Union (int x, int y) { if (x != y) { if (sz[x] < sz[y]) swap(x, y); for (int i = 1; i <= n; i++) cnt[i][x] += cnt[i][y]; p[y] = x; } return; } int intitialize(int m) { n = m; for (int i = 1; i <= n; i++) { sz[i] = 1; p[i] = i; for (int j = 1; j <= n; j++) cnt[i][j] = (i != j); } } int hasEdge (int x, int y) { x = find(x); y = find(y); if (x == y) return 0; if (cnt[x][y] > 1) return 0; return 1; }