#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#include "game.h"
int N;
vector<int> par;
vector<vector<int>> q;
int find(int n) {
if (par[n] == n) return par[n];
return par[n] = find(par[n]);
}
void merge(int a, int b) {
par[b] = a;
FOR(i, N) {
q[i][a] = q[a][i] += q[b][i];
}
}
void initialize(int n){
N = n;
par.resize(N);
FOR(i, N) par[i] = i;
q.resize(N, vector<int>(N, 1));
FOR(i, N) q[i][i] = 0;
}
int hasEdge(int u, int v){
u = find(u);
v = find(v);
q[u][v]--;
q[v][u]--;
if (q[u][v]) return 0;
merge(u, v);
return 1; // only answer yes until the last flight between 2 components is asked
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |