#include <iostream>
#include <vector>
#include "game.h"
using namespace std;
int M, s[1505][1505], par[1505];
void initialize(int N){
M = N;
for (int i=1;i<=M;i++)
for (int j=1;j<=M;j++)
s[i][j] = (i != j);
}
int root(int v){
if (par[v] == 0)
return v;
par[v] = root(par[v]);
return par[v];
}
int hasEdge(int u, int v){
// for (int i=1;i<=M;i++){
// for (int j=1;j<=M;j++)
// if (i != j and root(i) == i and root(j) == j)
// cout<<i<<" "<<j<<" "<<s[i][j]<<'\n';
// }
u = root(u + 1);
v = root(v + 1);
// cout<<u<<" "<<v<<" aa ";
if (s[u][v] != 1){
s[u][v] = s[v][u] = s[u][v] - 1;
return 0;
}
for (int i =1;i<=M;i++)
if (i != u and i != v and root(i) == i)
s[u][i] = s[i][u] = s[i][v] + s[i][u];
par[v] = u;
return 1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |