Submission #886020

#TimeUsernameProblemLanguageResultExecution timeMemory
886020vjudge1Airplane (NOI23_airplane)C++17
0 / 100
173 ms15844 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define endl "\n"
#define all(aa) aa.begin(), aa.end()

int main(){
	int n, m;
	cin>>n>>m;

	vector<int> v(n);
	vector<vector<int>> g(n);
	for(auto &e:v) cin>>e;
	for(int i=0; i<m; i++){
		int a, b;
		cin>>a>>b;
		a--; b--;

		g[a].push_back(b);
		g[b].push_back(a);
	}

	vector<int> ans(n, -1), ans2(n, -1);
	priority_queue<pair<int, int>> pq;
	pq.push({0, 0});
	while(pq.size()){
		auto [t, cur]=pq.top();
		pq.pop();

		if(ans[cur]!=-1) continue;
		t=ans[cur]=-t;

		for(auto ch:g[cur]){
			pq.push({-max(t, v[ch]), ch});
		}
	}

	pq.push({0, n-1});
	while(pq.size()){
		auto [t, cur]=pq.top();
		pq.pop();

		if(ans2[cur]!=-1) continue;
		t=ans2[cur]=-t;

		for(auto ch:g[cur]){
			pq.push({-max(t, v[ch]), ch});
		}
	}

	int res=INT_MAX;
	for(int i=0; i<n; i++){
		res=min(res, max(ans[i], ans2[i])*2);
	}
	cout<<res<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...