HDU 1874 畅通工程续

来源:互联网 发布:最好的软件开发学校 编辑:程序博客网 时间:2024/06/03 17:33

多源最短路问题。
floyd;注意处理重边。

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;int dis[220][220];int main(){    int n, m;    while(~scanf("%d%d",&n,&m))    {        memset(dis,0x3f,sizeof(dis));        int u,v,w;        for(int i = 1; i <= m; i++)        {            scanf("%d%d%d",&u,&v,&w);            if(dis[u][v] > w)            {                dis[u][v] = w;                dis[v][u] = w;            }        }        for(int k = 0; k < n; k++)        {            for(int i = 0; i < n; i++)            {                for(int j = 0; j < n; j++)                {                    if(dis[i][j] > dis[i][k] + dis[k][j])                    {                        dis[i][j] = dis[i][k] + dis[k][j];                    }                }            }        }        int s,t;        scanf("%d%d",&s,&t);        if(s == t) printf("0\n");        else if(dis[s][t] != 0x3f3f3f3f)        printf("%d\n",dis[s][t]);        else printf("-1\n");    }    return 0;}
0 0