Submission #349736

#TimeUsernameProblemLanguageResultExecution timeMemory
349736Pety게임 (IOI14_game)C++14
100 / 100
509 ms25324 KiB
#include <bits/stdc++.h> using namespace std; int n, sz[2000], p[2000], cnt[1502][1502]; 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]; cnt[x][i] += cnt[i][y]; } p[y] = x; } return; } void initialize(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++;y++; x = find(x); y = find(y); if (x == y) return 0; if (cnt[x][y] > 1) { cnt[x][y]--; cnt[y][x]--; return 0; } Union(x, y); return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...