Submission #1165093

#TimeUsernameProblemLanguageResultExecution timeMemory
1165093boclobanchatGame (IOI14_game)C++20
100 / 100
213 ms16076 KiB
#include"game.h" #include<bits/stdc++.h> using namespace std; int N; int dsu[1666],F[1666][1666],cnt[1666]; int root(int i) { if(!dsu[i]) return i; return dsu[i]=root(dsu[i]); } void merge(int i,int j) { if((i=root(i))==(j=root(j))) return ; dsu[j]=i,cnt[i]+=cnt[j],F[min(i,j)][max(i,j)]=0; for(int a=1;a<=N;a++) F[min(a,i)][max(a,i)]+=F[min(a,j)][max(a,j)],F[min(a,j)][max(a,j)]=0; } void initialize(int n) { N=n; for(int i=1;i<=n;i++) cnt[i]=1; return ; } int hasEdge(int u,int v) { u=root(++u),v=root(++v); if(u>v) swap(u,v); if(++F[u][v]==cnt[u]*cnt[v]) { merge(u,v); return 1; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...