图论之最短路径算法

TimeLimit:1000MS  MemoryLimit:128MB
64-bit integer IO format:%lld
未提交 | 登录后收藏
Problem Description

重要的事情说三遍

仔细看题!!!

仔细看题!!!

仔细看题!!!


众所周知,在最短路径有三种比较经典的算法,Floyd,SPFA,dijkstra这三种算法各有各的好处,比如在不优化的情况下,dijkstra用来处理稠密图就优于SPFA,而稀疏图反之。而Floyd则可以用来处理多源最短路径。

Floyd算法是最短路的一一种利用dp思想来求多点对多点的算法。基本的思想就是先枚举一个中间点,在枚举两个端点,判断两个端点中间,是否存在这两个端点分别到这个中间点的距离相加小于这两个点之间的当前最短路径,说明当前的路径是最短路径,更新就好了——该操作也被称为松弛操作。

Floyd的板子如下:

void Floyd(){
        if(n<3)return ;
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				maps[i][j]=min(maps[i][j],maps[i][k]+maps[k][j]);
}


现在给你一个有n个点的图,请你计算使用Floyd算法会使用多少次min函数

Input

多组输入,每组数据1<=n<=1e6.

Output

每组输出一个答案

SampleInput
3
SampleOutput
27
Submit
题目统计信息详细
总AC数34
通过人数32
尝试人数34
总提交量117
AC率27.35%
AC该题后可以添加标签
贴完标签可以获得20ACB。
并且可以获得本题所有提交代码查看权限。
点击标题可以显示标签。
如果你还没认真思考过这题,请不要查看标签
如果您已经通过了该题,请务为该题贴上标签
作者

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: