#include<bits/stdc++.h>
using namespace std;
const int N=2e6+9;
#define int long long
typedef pair<int,int> pii;
struct node{
int w,to;
};
vector<node> mp[N];
int n,m;
int dist[N],vis[N],ans[N];
void dij(){
priority_queue<pii,vector<pii>,greater<pii>>q;
memset(dist,0x3f,sizeof dist);
memset(ans,0x3f,sizeof ans);
q.push({0,1});
dist[1]=0,ans[1]=0;
while(q.size()){
auto p=q.top();
q.pop();
int x=p.first,y=p.second;
if(vis[y]) continue;
vis[y]=1;
for(auto it:mp[y]){
if(dist[it.to]>x+1){
dist[it.to]=x+1;
ans[it.to]=ans[y]+it.w;
q.push({dist[it.to],it.to});
}
else if(dist[it.to]==x+1){
if(ans[it.to]>ans[y]+it.w){
ans[it.to]=min(ans[it.to],ans[y]+it.w);
q.push({dist[it.to],it.to});
}
}
}
}
cout<<dist[n]+1<<' '<<ans[n]<<'\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
while(m--){
int u,v,w;
cin>>u>>v>>w;
mp[u].push_back({w,v});
mp[v].push_back({w,u});
}
dij();
return 0;
}
坐火车(dijkstra
于 2023-03-12 19:19:03 首次发布