Submission #603678

#TimeUsernameProblemLanguageResultExecution timeMemory
603678MrDebooStranded Far From Home (BOI22_island)C++17
10 / 100
1084 ms22892 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
    int n,m;
    cin>>n>>m;
    int val[n+1];
    for(int i=1;i<=n;i++)cin>>val[i];
    vector<int>vct[n+1];
    while(m--){
        int x,y;
        cin>>x>>y;
        vct[x].push_back(y);
        vct[y].push_back(x);
    }
    string s(n+1,'1');
    vector<bool>done(n+1);
    srand(43654634);
    vector<pair<int,int>>vv,V;
    for(int i=1;i<=n;i++)V.push_back({val[i],i});
    for(auto &[ii,i]:V){
        if(done[i])continue;
        vector<int>v;
        vector<bool>vis(n+1);
        priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
        pq.push({0,i});
        int tot=0;
        bool bl=1;
        while(pq.size()){
            int a=pq.top().second,b=pq.top().first;
            pq.pop();
            if(vis[a])continue;
            vis[a]=1;
            if(b>tot)break;
            v.push_back(a);
            tot+=val[a];
            for(auto &w:vct[a]){
                pq.push({val[w],w});
            }
        }
        if(v.size()==n){
            deque<pair<int,int>>dq={{i,val[i]}};
            for(auto &w:v)vis[w]=0;
            while(dq.size()){
                int a=dq.front().first,b=dq.front().second;
                dq.pop_front();
                if(vis[a])continue;
                vis[a]=1;
                if(val[a]>=b){
                    done[a]=1;
                    s[a]='1';
                    b=val[a];
                }
                for(auto &w:vct[a]){
                    dq.push_back({w,b});
                }
            }
        }else{
            for(auto &i:v){
                done[i]=1;
                s[i]='0';
            }
        }
    }
    cout<<s.substr(1,n);
}

Compilation message (stderr)

island.cpp: In function 'int main()':
island.cpp:41:20: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   41 |         if(v.size()==n){
      |            ~~~~~~~~^~~
island.cpp:28:14: warning: unused variable 'bl' [-Wunused-variable]
   28 |         bool bl=1;
      |              ^~
#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...