HDU 2544 最短路 (最短路 Dijkstra)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544

代码:

#include<stdio.h>
#include<string.h>

using namespace std;

int maps[105][105];
int n,m;
int dis[105];
int book[105];

int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        if(n==0&&m==0)
            break;
        memset(dis,0,sizeof(dis));
        int inf=9999999;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(i==j)maps[i][j]=0;
                else maps[i][j]=999999;
            }
        }

        for(int i=0;i<m;i++)
        {
            int x,y,t;
            scanf("%d%d%d",&x,&y,&t);
            maps[x][y]=t;
            maps[y][x]=t;
        }

        for(int i=1;i<=n;i++)
            dis[i]=maps[1][i];

        memset(book,0,sizeof(book));
        book[1]=1;
        int minn,u;
        for(int i=1;i<=n-1;i++)
        {
            minn=inf;
            for(int j=1;j<=n;j++)
            {
                if(book[j]==0 && dis[j] <minn)
                {
                    minn=dis[j];
                    u=j;
                }
            }
            book[u]=1;
            for(int v=1;v<=n;v++)
            {
                if(maps[u][v]<inf)
                {
                    if(dis[v]>dis[u]+maps[u][v])
                        dis[v]=dis[u]+maps[u][v];
                }
            }
        }

        printf("%d\n",dis[n]);
    }
}

Floyd 任意两点间最短距离。多源最短路径          多个原点

Dijkstra 从一个点到所有点的最短距离。单源最短路径            一个原点

你可能感兴趣的:(HDU 2544 最短路 (最短路 Dijkstra))