| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1351246 | top1svtin | Stranded Far From Home (BOI22_island) | C++17 | 405 ms | 106836 KiB |
#include <bits/stdc++.h>
#define kien long long
#define int long long
#define FOR(i, a, b) for (int i = a;i <= b; i++)
#define FORD(i, a, b) for (int i = a;i >= b; i--)
#define task "a"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
using namespace std;
const int mxn = 2e5 + 5;
kien n, m, a[mxn];
kien ans[mxn];
vector <int> dp[mxn];
map <kien, vector <kien>> pp;
map <kien, vector <kien>> ver;
struct DSU {
kien par[mxn], sum[mxn], sz[mxn];
void init(int n) {
FOR (i, 1, n) par[i] = i, sum[i] = a[i], sz[i] = 1;
}
int find_set (int u) {
return par[u] == u ? u : par[u] = find_set(par[u]);
}
void union_set (int u, int v) {
u = find_set(u); v = find_set(v);
if (u == v) return;
// if (sz[u] < sz[v]) swap(u, v);
sum[u] += sum[v];
sz[u] += sz[v];
par[v] = u;
}
int get (int u) {
u = find_set(u); return sum[u];
}
int kich (int u) {
u = find_set(u); return sz[u];
}
} dsu;
main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
if (fopen(task".inp", "r")) {
fin(task); fou(task);
}
cin >> n >> m;
FOR (i, 1, n) { cin >> a[i]; pp[a[i]].pb(i); ver[a[i]].pb(i); ans[i] = 1; }
FOR (i, 1, m) {
int u, v;
cin >> u >> v;
dp[u].pb(v); dp[v].pb(u);
}
dsu.init(n);
for (auto i : pp) {
// dsu.init(n);
for (auto u : ver[i.first]) {
for (auto v : dp[u]) {
/// ta có thể rút gọn a[u] <= a[v] vì u luôn thuộc ver[i.first] tức là u luôn == i.first
if (a[v] <= a[u]) { dsu.union_set(u, v); }
}
}
for (auto x : i.second) {
// cout << x << " ";
kien tong = dsu.get(x);
// cout << tong << " " << i.first << "\n";
if (tong > i.first) pp[tong].pb(x);
else if (dsu.kich(x) != n) {
ans[x] = 0;
}
}
}
FOR (i, 1, n) cout << ans[i];
}
컴파일 시 표준 에러 (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... | ||||
