Submission #129623

#TimeUsernameProblemLanguageResultExecution timeMemory
129623SortingGame (IOI14_game)C++14
0 / 100
1072 ms376 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1507; int n; int par[N], sz[N]; bool e[N][N]; void find_par(int u){ if(u == par[u]){ return; } find_par(par[u]); par[u] = par[par[u]]; } bool unite(int u, int v){ find_par(u); find_par(v); if(par[u] == par[v]){ return false; } if(sz[par[u]] < sz[par[v]]){ swap(u, v); } sz[par[u]] += sz[par[v]]; par[par[v]] = par[u]; return true; } void initialize(int _n){ n = _n; for(int i = 0; i < n; i++){ par[i] = i; sz[i] = 1; } } int q = 0, qt = 0; int hasEdge(int u, int v){ for(int i = 0; i < n; i++){ find_par(i); } q++; int cnt = 0; for(int i = 0; i < n; i++){ for(int j = i + 1; j < n; j++){ if(par[i] == par[u] && par[j] == par[v] && !e[i][j]){ cnt++; } } } e[u][v] = true; e[v][u] = true; if(cnt == 1){ unite(u, v); qt++; if(qt == n - 1 && q < n * (n - 1) / 2){ while(true); } return 1; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...