Submission #1320098

#TimeUsernameProblemLanguageResultExecution timeMemory
1320098888313666Stranded Far From Home (BOI22_island)C++20
10 / 100
1095 ms14736 KiB
#include <bits/stdc++.h>  
using namespace std;
typedef long long ll;
#define _ <<' '<<
#define print(x) cout<<#x<<": "<<(x)<<'\n'

int n,m;
vector<vector<int>> adj;
vector<ll> s;

bool bfs(const int st) {
    priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<>> q;
    vector<int> vis(n, 0);
    ll cur=s[st];
    for (const auto v:adj[st]) q.push({s[v], v});
    vis[st]=1;
    while (!q.empty()) {
        const auto [d, u]=q.top();
        q.pop();
        if (vis[u]) continue;
        vis[u]=1;
        if (d>cur) return false;
        cur+=d;
        for (const auto v:adj[u]) if (!vis[v]) q.push({s[v], v});
    }
    return true;
}

int main(){
    cin.tie(0)->sync_with_stdio(0);
    cout.tie(0);
    cin>>n>>m;
    adj.resize(n);
    s.resize(n);
    for (auto &e:s) cin>>e;
    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=0; i<n; i++) cout<<bfs(i);
    cout<<'\n';
}
#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...