Submission #1165686

#TimeUsernameProblemLanguageResultExecution timeMemory
1165686ty_mxzhnGame (IOI14_game)C++20
15 / 100
5 ms9288 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; const int N = 1507; int par[N] , subt[N] , cnt[N][N]; int find(int a){ if(par[a] == a)return a; return par[a] = find(par[a]); } void merge(int a , int b){ a = find(a) , b = find(b); if(a == b)return; if(subt[a] > subt[b])swap(a,b); subt[b] += subt[a]; par[a] = b; for(int i = 0;i<N;i++){ cnt[b][i] += cnt[a][i]; } } void initialize(int n) { iota(par , par + N , 0); fill(subt , subt + N , 1); memset(cnt , 0 , sizeof(cnt)); } int hasEdge(int u, int v) { u = find(u) , v = find(v); if(u == v)return 0; int target = subt[u] * subt[v]; if(cnt[u][v] == target-1){ merge(u,v); return 1; } else{ cnt[u][v]++; cnt[v][u]++; return 0; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...