Submission #789011

#TimeUsernameProblemLanguageResultExecution timeMemory
789011YassirSalamaGame (IOI14_game)C++14
100 / 100
293 ms31948 KiB
#include "game.h" #include<bits/stdc++.h> using namespace std; const int MAXN=2000; int par[MAXN]; int sz[MAXN]; int N; int cnt[MAXN][MAXN]; void initialize(int n) { N=n; for(int i=0;i<=n;i++) par[i]=i,sz[i]=1; for(int i=0;i<MAXN;i++){ for(int j=0;j<MAXN;j++){ cnt[i][j]=1; } } } int find(int node){ if(node==par[node]) return node; return par[node]=find(par[node]); } void merge(int a,int b){ a=find(a); b=find(b); if(a==b) return; for(int i=0;i<N;i++){ cnt[a][i]+=cnt[b][i]; cnt[i][a]+=cnt[i][b]; } par[b]=a; } int hasEdge(int u, int v) { int a=find(u); int b=find(v); if(cnt[a][b]==1){ merge(a,b); return 1; } cnt[a][b]--,cnt[b][a]--; return 0; } // int read_int() { // int x; // assert(scanf("%d", &x) == 1); // return x; // } // int main() { // int n, u, v; // n = read_int(); // initialize(n); // // cout<<n<<endl; // for (int i = 0; i < n * (n - 1) / 2; i++) { // u = read_int(); // v = read_int(); // // cout<<u<<" "<<v<<endl; // printf("%d\n", hasEdge(u, v)); // } // return 0; // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...