一个无脑的FLOYD代码。。。。

来源:互联网 发布:破解下载软件 编辑:程序博客网 时间:2024/05/29 13:20
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
int dp[10010][10010];
using namespace std;
int main()
{
    int i,j,k,m,n,so,to;
    scanf("%d%d",&m,&n);
    scanf("%d%d",&so,&to);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            dp[i][j]=100010;
    for(i=1;i<=m;i++)
    {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        dp[a][b]=c;   //建图
        dp[b][a]=c;
    }
    for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(dp[i][j]>dp[i][k]+dp[k][j])    //一开始都赋为INF
                    dp[i][j]=dp[i][k]+dp[k][j];     //以k为中间点,dp[i][j]表示从到j最短路,本质是一个DP
    printf("%d",dp[so][to]);
    return 0;
}


1 0