제출 #1203509

#제출 시각아이디문제언어결과실행 시간메모리
1203509notme게임 (IOI14_game)C++20
100 / 100
336 ms18856 KiB
#include "game.h" #include <bits/stdc++.h> #define pb push_back using namespace std; const int maxn = 2e3 + 10; int r; int all, cnt[maxn][maxn]; int p[maxn]; int find_leader(int i) { if(p[i] == i)return i; return (p[i] = find_leader(p[i])); } bool is_connected(int i, int j) { i = find_leader(i); j = find_leader(j); return (i == j); } void initialize(int n) { r = n * (n - 1)/2; all = n; for (int i = 0; i < n; ++ i) p[i] = i; for (int i = 0; i < n; ++ i) { for (int j = 0; j < n; ++ j) cnt[i][j] = 1; } } int hasEdge(int u, int v) { if(is_connected(u, v))return 0; u = find_leader(u); v = find_leader(v); if(cnt[u][v] == 1) { cnt[u][v] = 0; cnt[v][u] = 0; for (int i = 0; i < all; ++ i) { if(i == u || i == v)continue; cnt[v][i] += cnt[u][i]; cnt[i][v] += cnt[i][u]; } p[u] = v; for (int i = 0; i < all; ++ i) { cnt[i][u] = 0; cnt[u][i] = 0; } return 1; } cnt[u][v] --; cnt[v][u] --; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...