Submission #881668

#TimeUsernameProblemLanguageResultExecution timeMemory
881668teeslaStranded Far From Home (BOI22_island)C++14
10 / 100
1089 ms20752 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> ii;

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

bool ok(int x){

    vector<int> vis(n+2,0);
    vis[x] = 1;

    int sum = v[x];

    priority_queue<ii, vector<ii>, greater<ii>> q;

    for(auto i: adj[x]){vis[i] = 1; q.push({v[i], i});}

    while(!q.empty()){
        int val = q.top().first, id = q.top().second;
        q.pop();

        if(sum < val) return 0;
        for(auto k: adj[id]){
            if(vis[k]) continue;
            q.push({v[k], k});
            vis[k] = 1;
        }
        sum += val;
    }

    return true;

}

signed main(){

     cin >> n >> m;
    v.resize(n+2); adj.resize(n+2);

    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);
    }

    for(int i=1; i<=n; i++){
        if(ok(i))cout << 1;
        else cout <<0;
    }

    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...