# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1024893 | 2024-07-16T11:58:50 Z | overwatch9 | Stranded Far From Home (BOI22_island) | C++17 | 193 ms | 11604 KB |
#include <bits/stdc++.h> using namespace std; using ll = long long; const int maxn = 2e5 + 1; ll S[maxn]; vector <int> adj[maxn]; bool ans[maxn]; ll sz[maxn]; void dfs(int s, int p) { sz[s] = S[s]; for (auto i : adj[s]) { if (i == p) continue; dfs(i, s); sz[s] += sz[i]; } } vector <int> v; void dfs2(int s, int p) { for (auto i : adj[s]) { if (i == p) continue; dfs2(i, s); } if (sz[s] >= S[p]) v.push_back(s); else v.clear(); if (p == 1) { if (sz[s] >= S[1]) { for (auto j : v) ans[j] = true; } } } int main() { freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> S[i]; for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; adj[a].push_back(b); adj[b].push_back(a); } dfs(1, 1); for (auto i : adj[1]) { dfs2(i, 1); v.clear(); } ans[1] = 1; for (int i = 1; i <= n; i++) cout << ans[i]; cout << '\n'; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 182 ms | 11568 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 172 ms | 11540 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 193 ms | 11352 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 180 ms | 11604 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 182 ms | 11568 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |