Submission #1130445

#TimeUsernameProblemLanguageResultExecution timeMemory
1130445AcanikolicStranded Far From Home (BOI22_island)C++20
10 / 100
1096 ms14984 KiB
#include <bits/stdc++.h>

#define int long long

#define pb push_back
 
#define F first
 
#define S second
 
using namespace std;
 
const int N = 2e5 + 10;

const int mod = 1e9 + 7;

const int inf = 2e18;
 
vector<int>g[N]; 
 
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

 	int n,m;
 	cin >> n >> m;
 	vector<int>a(n + 1);
 	for(int i = 1; i <= n; i++) cin >> a[i];
 	for(int i = 1; i <= m; i++) {
 		int u,v;
 		cin >> u >> v;
 		g[u].pb(v);
 		g[v].pb(u);
 	}
 	for(int i = 1; i <= n; i++) {
 		vector<bool>was(n + 1,false);
 		was[i] = true;
 		priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
 		int sum = a[i];
 		bool ok = true;
 		for(int j : g[i]) pq.push({a[j],j});
 		while(!pq.empty()) {
 			int val = pq.top().F,u = pq.top().S;
 			pq.pop();
 			if(sum < val) {
 				ok = false;
 				break;
 			}
 			sum += val;
 			was[u] = true;
 			for(int j : g[u]) {
 				if(!was[j]) {
 					pq.push({a[j],j});
 				}
 			}
 		}
 		cout << ok;
 	}
    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...