Submission #1264597

#TimeUsernameProblemLanguageResultExecution timeMemory
1264597ortsac게임 (IOI14_game)C++20
100 / 100
224 ms15956 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 1505; int n; int qtd[MAXN][MAXN]; int dad[MAXN]; int sz[MAXN]; void initialize(int N) { n = N; memset(qtd, 0, sizeof qtd); for (int i = 0; i < n; i++) sz[i] = 1; for (int i = 0; i < n; i++) dad[i] = i; } int find(int x) { if (dad[x] == x) return x; return (dad[x] = find(dad[x])); } int hasEdge(int a, int b) { a = find(a), b = find(b); assert(a != b); if (sz[a] < sz[b]) swap(a, b); // b goes inside a, a is bigger if (qtd[a][b] != (sz[a]*sz[b] - 1)) { qtd[a][b]++; qtd[b][a]++; return 0; } dad[b] = a; sz[a] += sz[b]; for (int i = 0; i < n; i++) { if (i == a) continue; qtd[i][a] += qtd[i][b]; qtd[a][i] += qtd[b][i]; } return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...