首页 > 其他 > 详细

畅通工程续 HDU1874

时间:2019-01-26 14:50:47      阅读:206      评论:0      收藏:0      [点我收藏+]

floyd算法秒过。。。这个算法真的好简单

注意的一点是  两个城镇可能有多条路  存短的一条!!!

技术分享图片
#include<bits/stdc++.h>
using namespace std;

int m1[300][300];

int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)==2)
    {
       for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)m1[i][j]=20000;

        for(int i=0;i<n;i++)m1[i][i]=0;
        while(m--)
        {
            int a,b,c;
            scanf("%d%d%d",&a,&b,&c);
            if(m1[a][b]>c){m1[a][b]=m1[b][a]=c;}


        }
        for(int k=0;k<n;k++)
            for(int i=0;i<n;i++)
             for(int j=0;j<n;j++)
              if(m1[i][j]>m1[i][k]+m1[k][j])
                m1[i][j]=m1[i][k]+m1[k][j];


            int a,b;
            scanf("%d%d",&a,&b);
            if(m1[a][b]!=20000)
                printf("%d\n",m1[a][b]);
            else printf("-1\n");



    }



}
View Code

还有D算法和S算法得学一下。

畅通工程续 HDU1874

原文:https://www.cnblogs.com/bxd123/p/10323277.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!