首页 > 编程语言 >hihoCoder 1089 : 最短路径·二:Floyd算法

hihoCoder 1089 : 最短路径·二:Floyd算法

时间:2023-02-20 16:34:35浏览次数:45  
标签:map d% int 地点 hihoCoder 1089 Floyd 道路 鬼屋



#1089 : 最短路径·二:Floyd算法


10000ms



1000ms



256MB



描述

万圣节的中午,小Hi和小Ho在吃过中饭之后,来到了一个新的鬼屋!

鬼屋中一共有N个地点,分别编号为1..N,这N个地点之间互相有一些道路连通,两个地点之间可能有多条道路连通,但是并不存在一条两端都是同一个地点的道路。

由于没有肚子的压迫,小Hi和小Ho决定好好的逛一逛这个鬼屋,逛着逛着,小Hi产生了这样的问题:鬼屋中任意两个地点之间的最短路径是多少呢?


输入

每个测试点(输入文件)有且仅有一组测试数据。

在一组测试数据中:

第1行为2个整数N、M,分别表示鬼屋中地点的个数和道路的条数。

接下来的M行,每行描述一条道路:其中的第i行为三个整数u_i, v_i, length_i,表明在编号为u_i的地点和编号为v_i的地点之间有一条长度为length_i的道路。

对于100%的数据,满足N<=10^2,M<=10^3, 1 <= length_i <= 10^3。

对于100%的数据,满足迷宫中任意两个地点都可以互相到达。

输出

对于每组测试数据,输出一个N*N的矩阵A,其中第i行第j列表示,从第i个地点到达第j个地点的最短路径的长度,当i=j时这个距离应当为0。


样例输入

5 12 1 2 967 2 3 900 3 4 771 4 5 196 2 4 788 3 1 637 1 4 883 2 4 82 5 2 647 1 4 198 2 4 181 5 2 665

样例输出

0 280 637 198 394 280 0 853 82 278 637 853 0 771 967 198 82 771 0 196 394 278 967 196 0


hiho1000.cpp
HDOJ

Created by cipher on 15/1/13.
Copyright (c) 2015年 cipher. All rights reserved.

//
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
#define N 105
#define MAX 9999999
int map[N][N];
int n,m;

void floyd()
{
int i,j,k;
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(map[i][k]+map[k][j]<map[i][j])
{
map[i][j]=map[i][k]+map[k][j];
}
}
}
}
}

int main(){

int a,b,c,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
map[i][j]=MAX;
}
map[i][i]=0;
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(c<map[a][b])
{
map[a][b]=map[b][a]=c;
}
}
floyd();
for(i=1;i<=n;i++)
{
printf("%d",map[i][1]);
for(j=2;j<=n;j++)
{
printf(" %d",map[i][j]);
}
printf("\n");
}

}
return 0;
}



标签:map,d%,int,地点,hihoCoder,1089,Floyd,道路,鬼屋
From: https://blog.51cto.com/u_1382267/6068703

相关文章

  • hihoCoder 1043 : 完全背包
    #1043:完全背包20000ms1000ms256MB描述且说之前的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了!等等,这段故事为何似曾......
  • hihoCoder 1078 : 线段树的区间修改
    #1078:线段树的区间修改10000ms1000ms256MB描述对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题改了改,又出给了小Ho:假设货架上......
  • 只有五行的算法----Floyd-Warshall
    上图为一个城市地图,图中有4个城市,8条公路,公路上的数字表示这条公路的长短,并且这些公路是单向的,我们现在要求出任意两个城市之间的最短路径,也就是求任意两点的最短路径。我......
  • 【CCCC】L3-022 地铁一日游 (30分),floyd+大模拟
    problemL3-022地铁一日游(30分)森森喜欢坐地铁。这个假期,他终于来到了传说中的地铁之城——魔都,打算好好过一把坐地铁的瘾!魔都地铁的计价规则是:起步价2元,出发站与到达......
  • 「 每日一练,快乐水题 」1089. 复写零
    文章目录​​......
  • 使用栅格地图复现Floyd算法
    Floyd算法适用于APSP(AllPairsShortestPaths,多源最短路径),是一种动态规划算法,稠密图效果最佳,边权可正可负。此算法简单有效,由于三重循环结构紧凑,对于稠密图,效率要高于Di......
  • 再讲Floyd变形:传递闭包类问题
    题目今天上课老师讲到一道传递闭包的问题,由于蒟蒻之前讲的不详细再来讲一遍。传送门思路建图,注意是有向图。能确定名次指的是:在图上由这个点可以到达的点数+在图上可......
  • Floyd
    ♠useC++11是一种求多源最短路的算法,但复杂度较高,为\(\mathcal{O}(n^3)\),不过常数较小,编码简单。(只有3个for)我们设三个节点\(k,u,v\),我们求\(u\)到\(v\)的最......
  • 算法之Floyd-Warshall算法【c++】【图论】【最短路】
    我们作为刚学图论的小蒟蒻,先接触到的算法一定是图上最短路径算法。而最短路算法中最简单的当属Floyd-Warshall算法。下面是一些基本介绍:​该算法可以计算图上任意两点间......
  • Floyd算法
    Floyd算法dijistra算法解决,从一点出发,到其它所有点的最短路径。此算法解决,从任何一点出发,到任何点的最短路径。https://zhuanlan.zhihu.com/p/87480486理解......