제출 #1314015

#제출 시각아이디문제언어결과실행 시간메모리
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...