洛谷· P1339 [USACO09OCT]熱浪Heat Wave
阿新 • • 發佈:2018-11-05
輸入輸出樣例
輸入樣例#1: 複製
7 11 5 4 2 4 2 1 4 3 7 2 2 3 4 3 5 7 5 7 3 3 6 1 1 6 3 4 2 4 3 5 6 3 7 2 1
輸出樣例#1: 複製
7
說明
【樣例說明】
5->6->1->4 (3 + 1 + 3)
#include<stdio.h> #define N 3000 int e[N][N],book[N],dis[N]; int main() { int a,b,c,i,j,u,v,n,m,s,t,min,inf=99999999; scanf("%d%d%d%d",&n,&m,&s,&t); for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i==j) e[i][j]=0; else e[i][j]=inf; for(i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); if(e[a][b]>c) e[a][b]=e[b][a]=c; } for(i=1;i<=n;i++) book[i]=0; book[s]=1; for(i=1;i<=n;i++) dis[i]=e[s][i]; for(i=1;i<n;i++) { min=inf; for(j=1;j<=n;j++) if(book[j]==0&&dis[j]<min) { min=dis[j]; u=j; } book[u]=1; for(v=1;v<=n;v++) if(dis[v]>dis[u]+e[u][v]&&e[u][v]!=inf) dis[v]=dis[u]+e[u][v]; } printf("%d\n",dis[t]); return 0; }