Submission #430863

#TimeUsernameProblemLanguageResultExecution timeMemory
430863CSQ31Game (IOI14_game)C++17
100 / 100
462 ms15404 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; int par[1500]; int cnt[1500][1500]; int N; int find(int x){ if(x==par[x])return x; return par[x] = find(par[x]); } void initialize(int n){ N=n; for(int i=0;i<n;i++)par[i] = i; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) cnt[i][j] = 1; } int hasEdge(int u, int v){ u = find(u); v = find(v); if(u>v)swap(u,v); if(cnt[u][v] == 1){ par[u] = v; for(int i=0;i<N;i++){ int a = find(i); if(i==u || i==v || a!=i)continue; cnt[min(v,a)][max(v,a)]+=cnt[min(u,a)][max(u,a)]; } return 1; }else{ cnt[u][v]--; return 0; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...