hdu2544 最短路,dijstra(模板)

来源:互联网 发布:知乎日报打不开 编辑:程序博客网 时间:2024/06/05 00:21

题目链接:点击打开链接

#include <iostream>#include<cstring>#include<cstdio>using namespace std;const int INF=0x3f3f3f3f;int dis[110],vis[110],v[110][110];void Dijkstra(int n){    int i,j,pos;    for(i=1; i<=n; i++)    {        vis[i]=0;        //标记数组初始化        dis[i]=v[1][i];    }    vis[1]=1;    for(i=1; i<n; i++)    {        int minn=INF;        for(j=1; j<=n; j++)            if(!vis[j]&&dis[j]<minn)            {                pos=j;                minn=dis[j];            }        vis[pos]=1;        for(j=1; j<=n; j++)        {            if(dis[j]>dis[pos]+v[pos][j])                dis[j]=dis[pos]+v[pos][j];        }    }}int main(){    int N,M,i,j,a,b;    while(~scanf("%d %d",&N,&M)&&N)    {      memset(v,0x3f,sizeof(v));        for(i=1; i<=M; i++)        {           scanf("%d %d",&a,&b);           scanf("%d",&v[a][b]);            v[b][a]=v[a][b];        }        Dijkstra(N);       printf("%d\n",dis[N]);    }    return 0;}