Submission #162819

#TimeUsernameProblemLanguageResultExecution timeMemory
162819nickmet2004Game (IOI14_game)C++11
0 / 100
3 ms380 KiB
#include<bits/stdc++.h> #include<game.h> using namespace std; const int NAX = 1505; int P[NAX] , sz[NAX]; int used[NAX][NAX]; void make_set(){ for(int i = 0; i < NAX; ++i){ P[i] = i; sz[i] = 1; } } int Find(int x){ return (P[x] == x) ? x : P[x] = Find(P[x]); } int Union(int u , int v){ int U = Find(u); int V = Find(v); int edge = sz[U] * sz[V]; int c1 = sz[U] , c2 = sz[V]; int x = (c1 >= c2) ? c1 : c2; int y = (c1 < c2) ? c1 : c2; --used[x][y]; if(edge + used[x][y] == 0){ sz[x] += sz[y]; P[y] = x; return 1; } return 0; } void initialize(int n){ make_set(); } int hasEdge(int u , int v){ return Union(u , v); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...