poj 2387 Til the Cows Come Home (最短路,dijkstra模版题)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#define _CRT_SECURE_NO_WARNINGS #include<string.h> #include<stdio.h> #include<math.h> const int MAXN=1010; #define typec int const typec INF=0x3f3f3f3f;//防止后面溢出,这个不能太大 bool vis[MAXN]; int pre[MAXN]; typec cost[MAXN][MAXN]; typec lowcost[MAXN]; void Dijkstra(int n,int beg) { for(int i=1;i<=n;i++) { lowcost[i]=INF;vis[i]=false;pre[i]=-1; } lowcost[beg]=0; for(int j=1;j<=n;j++) { int k=-1; int Min=INF; for(int i=1;i<=n;i++) if(!vis[i]&&lowcost[i]<Min) { Min=lowcost[i]; k=i; } if(k==-1)break; vis[k]=true; for(int i=1;i<=n;i++) if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i]) { lowcost[i]=lowcost[k]+cost[k][i]; pre[i]=k; } } } int main() { int n,i,j,t,a,b,c; while(scanf("%d%d",&t,&n)!=EOF) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) cost[i][j]=(i==j)? 0:INF; for(i=0;i<t;i++) { scanf("%d%d%d",&a,&b,&c); if(cost[a][b]>c) cost[a][b]=cost[b][a]=c; } Dijkstra(n,n); printf("%d\n",lowcost[1]); } return 0; }
一道又一道,好高兴!