hdu 2544 最短路

点击打开链接

模版。。

#include"stdio.h"
#include"string.h"
#define INF 99999999
int map[101][101],mark[101],f[101];
int n,m,s,e;
int min(int x,int y)
{
    return x<y?x:y;
}
void dijkstra()
{
    int i,j,k,m;
    memset(mark,0,sizeof(mark));
    for(i=1;i<=n;i++)
        f[i]=map[1][i];
    f[1]=0;
    mark[1]=1;
    for(i=1;i<=n;i++)
    {
        m=INF;
        for(j=1;j<=n;j++)
        {
            if(!mark[j]&&f[j]<m)
            {
                m=f[j];
                k=j;
            }
        }
        if(m==INF)break;
        mark[k]=1;
        for(j=1;j<=n;j++)
            if(!mark[j]&&f[j]>f[k]+map[k][j])
                f[j]=f[k]+map[k][j];
    }
    printf("%d\n",f[n]);
}
int main()
{
    int i,j,a,b,c;
    while(scanf("%d%d",&n,&m)!=EOF&&n&&m)
    {
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                map[i][j]=(i==j?0:INF);
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            map[a][b]=map[b][a]=min(map[a][b],c);
        }
        dijkstra();
    }
    return 0;
}


原文地址:https://www.cnblogs.com/yyf573462811/p/6365393.html