Submission #867994

#TimeUsernameProblemLanguageResultExecution timeMemory
867994TAhmed33Stranded Far From Home (BOI22_island)C++98
10 / 100
598 ms524288 KiB
#include <bits/stdc++.h> using namespace std; #define int long long bool ok[200001]; vector <int> adj[200001]; int cnt[200001], sze[200001]; void dfs (int pos, int par) { sze[pos] = cnt[pos]; for (auto j : adj[pos]) { if (j != par) { dfs(j, pos); sze[pos] += sze[j]; } } } void dfs2 (int pos, int par) { if (par != -1) { if (sze[pos] < cnt[par]) return; } ok[pos] = 1; for (auto j : adj[pos]) if (j != par) dfs2(j, pos); } signed main () { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> cnt[i]; for (int i = 1; i < n; i++) { int a, b; cin >> a >> b; adj[a].push_back(b); adj[b].push_back(a); } dfs(1, -1); dfs2(1, -1); for (int i = 1; i <= n; i++) cout << ok[i]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...