1 条题解
-
0
Guest
-
0
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,int> PII; const ll INF=LLONG_MAX; const int N=1e5+10; bool st[N]; ll dist[N]; struct edge{ int v; ll w; }; vector<edge> adj[N]; int n,m; void Dijkstra(){ fill(dist+1,dist+n+1,INF); priority_queue<PII,vector<PII>,greater<PII>>q; q.push({0,1}); dist[1] = 0 ; while(!q.empty()) { int u = q.top().second;q.pop(); if(st[u]) continue; st[u] = true; for(int i = 0 ; i < adj[u].size();i++) { int v = adj[u][i].v; ll w = adj[u][i].w; if(dist[u] + w < dist[v]) { dist[v] = dist[u] + w; q.push({dist[v],v}); } } } } int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ int u,v,w; cin>>u>>v>>w; adj[u].push_back({v,w}); } Dijkstra(); if(dist[n]==INF) cout<<-1; else cout<<dist[n]; return 0; }
- 1
信息
- ID
- 8505
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 10
- 已通过
- 2
- 上传者