Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
68106 | 王籽易 | 最爱的城市 | C++ | 解答错误 | 0 | 0 MS | 456 KB | 873 | 2023-02-02 14:49:54 |
#include <bits/stdc++.h> using namespace std; int n,m,u,v; int e[10001],ne[10001],h[10001],w[10001],idx=1; int st[10001]; int path[10001]; void add(int a,int b,int wi){ e[idx]=b,ne[idx]=h[a],h[a]=idx,w[idx]=wi,idx++; } void dijkstra(){ for(int i=1;i<=n;i++){ int v=0; for(int j=1;j<=n;j++){ if(st[j]==0&&path[j]<path[v]){ v=j; } } st[v]=1; for(int j=h[v];j!=-1;j=ne[j]){ int k=e[j]; path[k]=min(path[v]+w[j],path[k]); } } } int main(){ memset(e,-1,sizeof(e)); memset(ne,-1,sizeof(ne)); memset(h,-1,sizeof(h)); memset(path,0x3f,sizeof(path)); memset(st,0,sizeof(st)); cin>>n>>m; while(m--){ int a,b,wi; cin>>a>>b>>wi; add(a,b,wi); add(b,a,wi); } cin>>u>>v; path[u]=0; dijkstra(); if(path[v]!=0x3f3f3f3f) cout<<path[v]; else cout<<"No path"; return 0; }