Submission #1345012

#TimeUsernameProblemLanguageResultExecution timeMemory
1345012yc11Stranded Far From Home (BOI22_island)C++20
10 / 100
1095 ms16572 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;

signed main(){
    int n,k;
    vector<vector<int> > n1;
    vector<int> n2;
    cin>>n>>k;
    n1.resize(n);
    n2.resize(n);
    for (int i = 0;i<n;i++) cin>>n2[i];
    for (int i = 0;i<k;i++){
        int a,b;
        cin>>a>>b;
        n1[a-1].push_back(b-1);
        n1[b-1].push_back(a-1);
            }

    string ans = "";
    for (int i = 0;i<n;i++) ans = ans+"0";
    for (int i = 0;i<n;i++){
        priority_queue<pair<int,int>,vector<pair<int,int> > , greater<pair<int,int> > > pq;
        int c = n2[i];
        vector<int> c1;
        c1.assign(n,0);
        c1[i] = 1;
        int c2 = 1;
        pq.push(make_pair(n2[i],i));
        while (!pq.empty()){
            if (c2==n) break;
            if (pq.top().first>c) break;
            int a = pq.top().first;
            int b = pq.top().second;
      
            pq.pop();
            if (c1[b]==0){
                c2++;
                c+=a;
                c1[b]=1;
            }
            for (int i = 0;i<n1[b].size();i++){
                if (c1[n1[b][i]]==1) continue;
                pq.push(make_pair(n2[n1[b][i]],n1[b][i]));
            }
        }
        if (c2==n) ans[i] = '1';

    }
    cout<<ans;

    return 0;

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