이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
#include <vector>
#include <queue>
#include <algorithm>
#include <iostream>
#include <string>
#include <bitset>
#include <map>
#include <set>
#include <tuple>
#include <string.h>
#include <math.h>
#include <random>
#include <functional>
#include <assert.h>
#include <math.h>
using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
vector<int> counts;
vector<int> has;
int total;
int remain;
int need;
void initialize(int n)
{
total = n - 1;
remain = n * (n - 1) / 2;
need = n - 1;
counts.resize(n);
has.resize(n);
}
//n-1개의 엣지를 만든다
//모든 정점에 대해 degree를 1 이상으로 만든다
int hasEdge(int u, int v)
{
int res = 0;
if ((counts[u] == total - 1 && has[u] == 0) ||
(counts[v] == total - 1 && has[v] == 0) ||
remain == need)
{
res = 1;
has[u]++;
has[v]++;
need--;
}
counts[u]++;
counts[v]++;
remain--;
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |