Submission
Status:
[PPPPPPPPPPPPPPPPPPPP]
Score: 100
User: chawinkn
Problemset: รถยนต์ รถไฟ เรือเมล์ ลิเก ตำรวจ
Language: cpp
Time: 0.023 second
Submitted On: 2025-03-17 18:04:21
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
vector<pii> g[409], G[409];
vector<int> d(409, 1e9), D(409, 1e9);
priority_queue<pii,vector<pii>,greater<pii>> pq;
bool t[409][409];
int n, m;
void dijkstra(vector<pii> g[], vector<int>& dist) {
pq.push({dist[1]=0, 1});
while (!pq.empty()) {
auto [d,u] = pq.top(); pq.pop();
for (auto [v,w] : g[u]) {
if (dist[u]+w < dist[v]) pq.push({dist[v]=dist[u]+w, v});
}
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin >> n >> m;
while (m--) {
int u, v;
cin >> u >> v;
g[u].push_back({v, 10*abs(u-v)});
g[v].push_back({u, 10*abs(u-v)});
t[u][v] = t[v][u] = true;
}
for (int u = 1; u <= n; u++) {
for (int v = 1; v <= n; v++) {
if (t[u][v]) continue;
G[u].push_back({v, 10*abs(u-v)});
G[v].push_back({u, 10*abs(u-v)});
}
}
dijkstra(g, d), dijkstra(G, D);
if (d[n] == 1e9 || D[n] == 1e9) cout << -1;
else cout << max(d[n], D[n]);
return 0;
}