This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ii pair<int,int>
using namespace std;
const int dv = 1e9 + 7;
const int sz = 1e5;
int n, m, vtd[2*sz+5], p[2*sz+5], idx, trav;
vector<int> adj[2*sz+5], v[2*sz+5];
ll cnt[2*sz+5];
void dfs(int node) {
cnt[node] = p[node];
vtd[node] = 1;
v[node].push_back(node);
for(auto i : adj[node]) {
if(!vtd[i]) {
dfs(i);
if(cnt[i] >= p[node]) {
if(v[i].size() > v[node].size()) swap(v[node], v[i]);
for(int j : v[i]) v[node].push_back(j);
}
cnt[node] += cnt[i];
}
}
}
int ans[2*sz+5];
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= n ;++i) {
cin >> p[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);
for(auto i: v[1]) ans[i] = 1;
for(int i = 1; i <= n; ++i) cout << ans[i];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |