short-path problem (Floyd)

来源:互联网 发布:首轮融资知乎 编辑:程序博客网 时间:2024/05/28 16:26

#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int INF = 0x3fffffff;int  g[1005][1005];int m;void Floyd(){    int i, j, k;     for (k=1;k<=m;k++)    {        for (i=1;i<=m;i++)        {            for (j=1;j<=m;j++)            {                if (g[i][j]>g[i][k]+g[k][j])                {                    g[i][j]=g[i][k]+g[k][j];                }            }        }    }}int main(){    int T, a, b, len;    int s, t, p;    scanf("%d", &T);    while(T--)    {        scanf("%d%d", &m, &p);        scanf("%d%d",&s,&t);        for(int i = 1; i <= m; ++i)            for(int j = 1; j < i; ++j)                g[i][j] = g[j][i] = INF;        while(p--)        {            scanf("%d%d%d", &a, &b, &len);            if(g[a][b] > len)                g[a][b] = g[b][a] = len;        }        Floyd();        printf("%d\n", g[s][t]);    }    return 0;}



0 0
原创粉丝点击