# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
879930 | sleepntsheep | Stranded Far From Home (BOI22_island) | C++17 | 89 ms | 14420 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <utility>
#include <vector>
#include <tuple>
#include <algorithm>
int n, m, s[200000], p[200000], r[200000];
long long q[200000];
int f(int x)
{
if (p[x] == x) return x;
int w = f(p[x]);
r[x] |= r[p[x]];
return p[x] = w;
}
void u_(int x, int y)
{
if ((x = f(x)) == (y = f(y))) return;
if (q[x] < s[y]) r[x] = 1;
q[y] += q[x];
p[x] = y;
}
int main()
{
scanf("%d%d", &n, &m);
for (int i = 0; i < n; ++i) scanf("%d", s+i), p[i] = i, q[i] = s[i];
std::vector<std::tuple<int, int, int>> e(m);
for (auto &[w, u, v] : e)
{
scanf("%d%d", &u, &v);
if (s[--u] > s[--v]) std::swap(u, v);
w = s[v];
}
std::sort(e.begin(), e.end());
for (auto [_, u, v] : e) u_(u, v);
for (int i = 0; i < n; ++i) f(i), putchar(48+!r[i]);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |