이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1500
int fathers[MAXN];
int connections[MAXN][MAXN];
void initialize (int n) {
for (int x = 0; x < n; x++) {
fathers[x] = x;
for (int y = 0; y < n; y++) connections[x][y] = 1;
connections[x][x] = 0;
}
}
int find (int n) {return fathers[n] == n ? n : fathers[n] = find(fathers[n]);}
void merge (int u, int v) {
fathers[u] = v;
for (int x = 0; x < MAXN; x++) {
connections[v][x] += connections[u][x];
connections[x][v] += connections[u][x];
}
}
int hasEdge (int u, int v) {
u = find (u), v = find(v);
if (v < u) swap(v,u);
if (connections[u][v] == 1 && connections[v][u] == 1) {
merge(u,v);
return 1;
}
connections[u][v]--;
connections[v][u]--;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |