# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
822984 | ymm | 슈퍼트리 잇기 (IOI20_supertrees) | C++17 | 176 ms | 24148 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "supertrees.h"
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
typedef long long ll;
using namespace std;
vector<vector<int>> ans;
int n;
struct dsu {
vector<int> par;
vector<vector<int>> nds;
void init(int n) {
par.assign(n, -1);
nds.assign(n, vector<int>());
Loop (i,0,n)
nds[i].push_back(i);
}
int rt(int v) { return par[v] == -1? v: (par[v] = rt(par[v])); }
bool same(int v, int u) { return rt(v) == rt(u); }
bool unite(int v, int u) {
v = rt(v);
u = rt(u);
if (v == u)
return 0;
if (nds[v].size() < nds[u].size())
swap(v, u);
par[u] = v;
nds[v].insert(nds[v].end(), nds[u].begin(), nds[u].end());
vector<int> tmp;
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |