# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1165691 | ty_mxzhn | Game (IOI14_game) | C++20 | 4 ms | 9288 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;
par[a] = b;
subt[b] += subt[a];
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);
assert(u != v);
int target = subt[u] * subt[v];
cnt[u][v]++;
cnt[v][u]++;
if(cnt[u][v] == target){
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |