제출 #714719

#제출 시각아이디문제언어결과실행 시간메모리
714719murad_2005Stranded Far From Home (BOI22_island)C++14
10 / 100
1090 ms524288 KiB
#include <bits/stdc++.h> #define ll long long #define ull unsigned ll #define ld long double #define pb push_back #define pf push_front #define pii pair<int, int> #define pllll pair<ll, ll> #define size(v) v.size() #define all(v) v.begin(), v.end() #define INF 2e9 #define f first #define s second using namespace std; vector<vector<int>>g; vector<ll>Sum; void dfs(int node, int par, vector<ll>&s){ for(int to : g[node]){ if(to != par){ dfs(to, node, s); Sum[node] += Sum[to]; } } Sum[node] += s[node]; } void DFS(int node, int par, vector<ll>&s, vector<int>&isOkay){ for(int to : g[node]){ if(to != par){ if(!isOkay[node]){ isOkay[to] = 0; }else{ if(Sum[to] >= s[node]){ isOkay[to] = 1; } } DFS(to, node, s, isOkay); } } } void Sub2(int n, int m, vector<ll>&s, vector<ll>&Sum){ vector<int>isOkay(n + 1, 0); isOkay[1] = 1; dfs(1, 1, s); DFS(1, 1, s, isOkay); for(int i = 1; i <= n; ++i){ cout << isOkay[i]; } cout << "\n"; } void solve(){ int n, m; cin >> n >> m; vector<ll>s(n + 1); g.resize(n + 1); Sum.assign(n + 1, 0); for(int i = 1; i <= n; ++i){ cin >> s[i]; } for(int i = 1; i <= m; ++i){ int u, v; cin >> u >> v; g[u].pb(v); g[v].pb(u); } Sub2(n, m, s, Sum); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int t; // cin >> t; t = 1; while(t--){ solve(); } return 0; }
#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...