Submission #1314015

#TimeUsernameProblemLanguageResultExecution timeMemory
1314015mantaggezAirplane (NOI23_airplane)C++20
0 / 100
45 ms12700 KiB
#include <bits/stdc++.h>

using namespace std;

#define pii pair<int, int>
#define tup tuple<int, int, int>

const int nx = 2e5+5;
const int INF = 1e9;

int n, m, a[nx], vs[nx];
vector<int> dist(nx, INF);
vector<pii> adj[nx];
priority_queue<pii, vector<pii>, greater<pii>> pq;

int main()
{
	cin.tie(NULL)->sync_with_stdio(false);
	cin >> n >> m;
	for(int i=1;i<=n;i++) cin >> a[i];
	for(int i=1;i<=m;i++)
	{
		int u, v;
		cin >> u >> v;
		int w = abs(a[u] - a[v]);
		if(!w) w = 1;
		adj[u].push_back({v, w});
		adj[v].push_back({u, w});
	}
	
	dist[1] = 0;
	
	int cnt = 0;
	pq.push({0, 1});
	while(!pq.empty())
	{
		auto [w, u] = pq.top();
		pq.pop();
		
		if(w > dist[u]) continue;
		//if(vs[u]) continue;
		//vs[u] = 1;
		// if(cnt++ > 50) return 0;
	
		// cout << u << ' ' << w << '\n';
	
		for(auto [v, nw] : adj[u])
		{
			if(dist[v] > dist[u] + nw)
			{
				dist[v] = dist[u] + nw;
				pq.push({dist[v], v});
			}		
		}		
	}
	
	cout << dist[n] ;
		
	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...