Submission #881698

#TimeUsernameProblemLanguageResultExecution timeMemory
881698teeslaStranded Far From Home (BOI22_island)C++14
10 / 100
1099 ms524288 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int n,m;
vector<vector<int>> adj;
vector<int> v, ssum,res;

int dfs(int x, int ant){

    int sum = v[x];

    for(auto i: adj[x]){
        if(i == ant) continue;
        sum += dfs(i,x);
    }

    ssum[x] = sum;
    return sum;
}

void dfs2(int x, int ant){

    if(ssum[x] < v[ant]) return;
    res[x] = 1;

    for(auto i: adj[x]){
        if(i == ant) continue;
        dfs2(i,x);
    }
    return;
}

signed main(){

    cin >> n >> m;
    adj.resize(n+2);
    v.resize(n+2);
    res.assign(n+2,0);

    ssum.assign(n+2, 0);

    for(int i=1; i<=n; i++) cin >> v[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,0);
    dfs2(1,0);

    for(int i=1; i<=n; i++) cout << res[i];
    cout << endl;
}
#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...