제출 #1343201

#제출 시각아이디문제언어결과실행 시간메모리
1343201jellybeanStranded Far From Home (BOI22_island)C++20
10 / 100
1115 ms589824 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back

const int N = 2e5+5;
int a[N];
vector<int> adj[N];
int sum[N], reach[N];
void dfs(int x, int p){
	for(auto i: adj[x]){
		if(i == p) continue;
		dfs(i,x);
		if(sum[i] >= a[x]) reach[i] = 1;
		sum[x] += sum[i];
	}
	sum[x] += a[x];
}

void dfs1(int x, int p){
	for(auto i: adj[x]){
		if(i == p) continue;
		if(!reach[x] or !reach[i]) reach[i] = 0;
		dfs1(i,x);
	}
}

signed main(){
	ios::sync_with_stdio(0); cin.tie(0);
	
	int n,m; cin>>n>>m;
	for(int i=1; i<=n; i++) cin>>a[i];
	for(int i=0; i<m; i++){
		int u,v; cin>>u>>v;
		adj[u].pb(v);
		adj[v].pb(u);
	}
	
	reach[1] = 1;	
	dfs(1,-1);
	dfs1(1,-1);
	for(int i=1; i<=n; i++) cout<<reach[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...