Submission #850342

#TimeUsernameProblemLanguageResultExecution timeMemory
850342BidoTeimaStranded Far From Home (BOI22_island)C++17
0 / 100
86 ms16628 KiB
#include <bits/stdc++.h>

typedef long long ll;
using namespace std; 
const int N = 2e5 + 3;
vector<int>adj[N];
int s[N];
bool solve_1(int x){
    using _Ty = pair<int,int>;
    priority_queue<_Ty, vector<_Ty>, greater<_Ty>>cur;
    for(int y:adj[x])cur.push({s[y],y});
    ll sz = s[x];
    bool vis[2005]{};
    vis[x]=1;
    while(cur.size()){ 
        int req = cur.top().first;
        int node = cur.top().second;
        cur.pop();
        if(vis[node])
            continue;
        vis[node] = 1;
        if(req>sz)
            return 0;
        sz += req;
        for(int ch : adj[node]){
            cur.push({ch, s[ch]});
        }
    }
    return 1;
}
int main()
{ 
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);    
    int n,m;
    cin>>n>>m;
    for(int i = 1; i <= n; i++)cin>>s[i];
    bool sub3=1;
    for(int i = 0; i < m; i++){
        int a,b;
        cin>>a>>b;
        adj[a].push_back(b);
        adj[b].push_back(a);
        sub3&=abs(a-b)==1;
    }
    if(n <= 2000 && m <= 2000){
        for(int i = 1; i <= n; i++)cout<<solve_1(i);
    }
    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...