1. 程式人生 > >HDU 2544 最短路(最短路 Floyd)

HDU 2544 最短路(最短路 Floyd)

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

程式碼:

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

using namespace std;

#define MAX 0x3f3f3f3f

int maps[105][105];

int main()
{
    int n,m;

    while(scanf("%d%d",&n,&m))
    {
        if(n==0&&m==0)
            break;

        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;
            }
        }
        int x,y,t;
        for(int i=0;i<m;i++)
        {
            scanf("%d%d%d",&x,&y,&t);
            maps[x][y]=t;
            maps[y][x]=t;
        }
        //int ans=0;

        for(int k=1;k<=n;++k)
        {
            for(int i=1;i<=n;++i)
            {
                for(int j=1;j<=n;++j)
                {
                    maps[i][j]=min(maps[i][j],maps[i][k]+maps[k][j]);
                }
            }
        }
        printf("%d\n",maps[1][n]);
    }
}