제출 #707928

#제출 시각아이디문제언어결과실행 시간메모리
707928speedyArda게임 (IOI14_game)C++14
100 / 100
355 ms25240 KiB
#include "game.h" #include "bits/stdc++.h" using namespace std; const int MAXN = 1505; int par[MAXN]; int comp[MAXN][MAXN]; int n; int find(int v) { if(par[v] == v) return v; return par[v] = find(par[v]); } void merge(int f, int s) { f = find(f), s = find(s); if(f == s) return; if(f > s) swap(f, s); par[s] = f; for(int i = 1; i <= n; i++) { if(i == f) continue; int old = comp[f][i]; comp[f][i] = old + comp[s][i]; comp[i][f] = old + comp[i][s]; } } void initialize(int total) { n = total; for(int i = 1; i <= n; i++) { par[i] = i; for(int j = 1; j <= n; j++) { comp[i][j] = (i != j ? 1 : 0); //cout << i << " " << j << " " << comp[i][j] << "\n"; } } } int hasEdge(int u, int v) { u++; v++; if(comp[find(u)][find(v)] == 1) { merge(u, v); return 1; } else { comp[find(u)][find(v)]--; comp[find(v)][find(u)]--; return 0; } return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...