Submission #722905

#TimeUsernameProblemLanguageResultExecution timeMemory
722905rshohruhStranded Far From Home (BOI22_island)C++17
0 / 100
494 ms12224 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > g;
vector<int> s;
vector<bool> used;
queue<int> b;
int n;
char bfs(int u){
    int cnt = s[u];
    used.assign(n+1, false);
    b.push(u);
    while(!b.empty()){
        u = b.front();
        b.pop();
        for(auto v: g[u]){
            if(s[v] > cnt) return '0';
            cnt += s[v];
        }
    }
    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){
        sort(g[i].begin(), g[i].end(), [&](int a, int b){
            return s[a] < s[b];
        });
    }
    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...