码迷,mamicode.com
首页 > 其他好文 > 详细

畅通工程续 HDU1874

时间:2019-01-26 15:19:47      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:一点   include   col   --   算法   opened   hdu1874   splay   print   

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

标签:一点   include   col   --   算法   opened   hdu1874   splay   print   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!