제출 #1218247

#제출 시각아이디문제언어결과실행 시간메모리
1218247Hamed_Ghaffari게임 (IOI14_game)C++20
100 / 100
215 ms21880 KiB
#include <bits/stdc++.h> using namespace std; const int MXN = 3003; int n, dsu[MXN], cnt[MXN][MXN], tmp[MXN]; void initialize(int n) { ::n = n; iota(dsu, dsu+n, 0); for(int i=0; i<n; i++) for(int j=0; j<n; j++) cnt[i][j] = i!=j; } void merge(int u, int v) { for(int i=0; i<n; i++) dsu[i] = dsu[i]==v ? u : dsu[i], tmp[i] = cnt[u][i] + cnt[v][i]; for(int i=0; i<n; i++) cnt[u][i] = cnt[i][u] = tmp[i]; } int hasEdge(int u, int v) { cnt[dsu[u]][dsu[v]]--; cnt[dsu[v]][dsu[u]]--; if(!cnt[dsu[u]][dsu[v]]) { merge(dsu[u], dsu[v]); return 1; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...