Submission #722980

#TimeUsernameProblemLanguageResultExecution timeMemory
722980rshohruhStranded Far From Home (BOI22_island)C++14
0 / 100
1074 ms12684 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > g;
vector<int> s;
vector<bool> used;
class Compare{
public:
    bool operator () (int a, int b){
        return s[a] > s[b];
    }
};
priority_queue<int, vector<int>, Compare> b;
int n;
char bfs(int u){
    used.assign(n+1, false);
    long long cnt = s[u];
    used[u] = true;
    for(int v: g[u])
        b.push(v);
    
    while(!b.empty()){
        u = b.top();
        b.pop();
        if(used[u]) continue;
        used[u] = true;
        if(s[u] > cnt) return '0';
        
        // cout << u << ' ';

        cnt += s[u];
        for(int v: g[u])
            b.push(v);
    }
    // cout << cnt << ' ';
    return '1';
}

int main(){
    int m;
    cin >> n >> m;
    s.resize(n+1);
    g.resize(n+1);
    for(int i = 1; i <= n; ++i) cin >> s[i];
    for(int i = 0, u, v; i < m; ++i){
        cin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    for(int i = 1; i <= n; ++i) cout << bfs(i);
}
#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...