Input
Output
Sample Input
5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100
Sample Output
90
//简单的Dijkstra使用,没有其它技巧,可以用来熟练模板、、、想学堆优化!!!!
#include <iostream>
#include <stdio.h>
#include <string.h>
#define N 1003
using namespace std;
int p[N][N];
int main()
{ //freopen("in.txt","r",stdin);
int T,n,i,j,min,x,y,cost;
bool f[N];
while(scanf("%d%d",&T,&n)!=EOF)
{
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
p[i][j]=0xffffff;
for(i=0;i<T;i++)
{
scanf("%d%d%d",&x,&y,&cost);
p[x][y]=p[x][y]<cost?p[x][y]:cost;
p[y][x]=p[x][y];
}
f[1]=1;x=n-1;
cost=0;
while(x--)
{
min=0xffffff;
for(i=2;i<=n;i++)
if(!f[i]&&p[1][i]<min)
{
min=p[1][i];
j=i;
}
f[j]=1;
for(i=2;i<=n;i++)
if(!f[i]&&p[j][i]+p[1][j]<p[1][i])
p[1][i]=p[j][i]+p[1][j];
}
printf("%d\n",p[1][n]);
}
return 0;
}