제출 #1002438

#제출 시각아이디문제언어결과실행 시간메모리
1002438AndreyStranded Far From Home (BOI22_island)C++14
0 / 100
62 ms25188 KiB
#include<bits/stdc++.h> using namespace std; vector<long long> haha[200001]; vector<long long> dsu(200001); vector<long long> tree[200001]; vector<long long> st(200001); vector<long long> wow(200001); vector<bool> ans(200001); long long calc(long long a) { long long c = a,e = a; while(dsu[c] != c) { c = dsu[c]; } while(e != dsu[e]) { long long d = dsu[e]; dsu[e] = c; e = d; } return c; } void dfs(long long a) { st[a] = wow[a]; for(long long v: tree[a]) { dfs(v); st[a]+=st[v]; } } void dude(long long a) { ans[a] = true; for(long long v: tree[a]) { if(st[v] >= wow[a]) { dude(v); } } } int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); long long n,m,a,b; cin >> n >> m; vector<pair<long long,long long>> wut(0); for(long long i = 1; i <= n; i++) { cin >> wow[i]; } for(int i = 0; i < m; i++) { cin >> a >> b; if(b > a) { swap(a,b); } tree[a].push_back(b); } /* sort(wut.begin(),wut.end()); for(long long i = 0; i < m; i++) { cin >> a >> b; if(wow[a] > wow[b]) { haha[a].push_back(b); } else { haha[b].push_back(a); } } for(long long i = 0; i < wut.size(); i++) { long long a = wut[i].second; for(long long v: haha[a]) { if(calc(v) != calc(a)) { tree[a].push_back(calc(v)); dsu[calc(v)] = a; } } }*/ dfs(1); dude(1); for(long long i = 1; i <= n; i++) { cout << ans[i]; } cout << endl; 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...