Til the Cows Come Home
#include<iostream> #include<cstring> using namespace std; const int maxn=2005; #define inf 0x3f3f3f3f int a[maxn][maxn]; int m,n; int dis[maxn]; int vis[maxn]; void dij() { for(int i=1; i<=m; i++) dis[i]=a[1][i]; vis[1]=1; for(int i=0; i<m; i++) { int temp=inf; int k; for(int j=1; j<=m; j++) if(dis[j]<temp&&!vis[j]) temp=dis[k=j]; vis[k]=1; for(int j=1; j<=m; j++) if(dis[j]>a[k][j]+dis[k]&&!vis[j]) dis[j]=a[k][j]+dis[k]; } } int main() { int u,v,w; memset(a,inf,sizeof(a)); memset(vis,0,sizeof(vis)); cin>>n>>m; while(n--) { cin>>u>>v>>w; if(w<a[u][v]) a[u][v]=a[v][u]=w; } dij(); int ans=dis[m]; cout<<ans<<endl; return 0; }