Submission #723073

#TimeUsernameProblemLanguageResultExecution timeMemory
723073Mr_HusanboyStranded Far From Home (BOI22_island)C++17
10 / 100
1072 ms18332 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; void solve(){ int n, m; cin >> n >> m; if(n == 1){ cout << '1'; return; } vector<int> s(n); for(auto &u : s) cin >> u; vector<vector<int>> g(n); for(int i = 0; i < m; i ++){ int u, v; cin >> u >> v; u --; v --; g[u].push_back(v); g[v].push_back(u); } vector<int> us(n); auto com = [&](auto &com, int i)->int{ int res = 0; us[i] = 1; for(auto u : g[i]){ if(us[u]) continue; res += com(com, u) + 1; } return res; }; if(com(com, 0) != n - 1){ cout << string(n,'0'); return; } auto check = [&](int i)->int{ priority_queue<pair<int,int>> q; ll cur = s[i]; vector<int> used(n); used[i] = 1; for(auto u : g[i]){ q.push({-s[u], u}); used[u] = 1; } int cnt = 1; while(!q.empty()){ int t = q.top().second; q.pop(); //cout << t + 1 << endl; if(s[t] <= cur){ cur += s[t]; cnt ++; }else{ return 0; } for(auto u : g[t]){ if(used[u]) continue; used[u] = 1; q.push({-s[u], u}); } } //for(auto u : used) cout << u << ' '; cout<< endl; return cnt == n; }; for(int i = 0; i < n; i ++){ cout << check(i); #ifdef LOCAL cout << endl; #endif } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int testcases = 1; //cin >> testcases; while(testcases --){ solve(); if(testcases) cout << '\n'; #ifdef LOCAL else cout << '\n'; cout << "___________________" << endl; #endif } 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...