제출 #1314027

#제출 시각아이디문제언어결과실행 시간메모리
1314027mantaggezAirplane (NOI23_airplane)C++20
0 / 100
46 ms17644 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #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; signed 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]); 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) { if(a[u] == a[v]) 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...