Submission #1305509

#TimeUsernameProblemLanguageResultExecution timeMemory
1305509coolboy19521Stranded Far From Home (BOI22_island)C++20
0 / 100
1095 ms12240 KiB
#include "bits/stdc++.h"

#define FOR(i,a,b)for(int i=(a);i<(b);i++)
#define F0R(i,a)FOR(i,0,a)
#define ROF(i,a,b)for(int i=(b)-1;i>=(a);i--)
#define R0F(i,a)ROF(i,0,a)
#define REP(a)F0R(_,a)

using namespace std;

const int mxn=2e5+20;

vector<int>aj[mxn];
int s[mxn];

int main(){
	cin.tie(nullptr)->sync_with_stdio(false);
	int n,m;cin>>n>>m;
	F0R(i,n)cin>>s[i];
	REP(m){
		int a,b;cin>>a>>b;
		a--,b--;
		aj[a].push_back(b);
		aj[b].push_back(a);
	}
	F0R(i,n){
		priority_queue<array<int,2>>pq;
		vector<bool>vis(n);
		vis[i]=true;
		pq.push({-s[i],i});
		long long sm=0;
		while(not pq.empty()){
			auto tp=pq.top();
			pq.pop();
			sm-=tp[0];
			for(int v:aj[tp[1]])if(not vis[v]){
				if(s[v]<=sm){
					vis[v]=true;
					pq.push({-s[v],v});
				}
			}
		}
		int loc=0;
		F0R(j,n)if(vis[j])loc++;
		cout<<(loc==n);
	}
	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...