最小环——Floyd变种算法(C++)

源代码:

#include<cstdio>
#include<cstring>
int n,i[1001][1001],f[1001][1001],ans;
int main()
{
memset(i,0x3f,sizeof(i));
memset(f,0x3f,sizeof(f));
ans=0x3f; //对于存储变量和数组,初始化为最大值。
scanf("%d",&n);
for (int a=1;a<=n;a++)
for (int b=1;b<=n;b++)
{
int t;
scanf("%d",&t);
if (t!=-1)
f[a][b]=i[a][b]=t;
} //矩阵输入。
for (int a=1;a<=n;a++)
{
for (int b=1;b<a;b++) //环的长度定义为一个点到另一个点的、两个不同道路的长度之和。
for (int c=b+1;c<a;c++) //本算法将自环排除在外。
if (ans>i[b][c]+f[c][a]+f[a][b])
ans=i[b][c]+f[c][a]+f[a][b]; // [(c --> a --> b)+(b --> c)の最短路] 即为 b 与 c 的最小环。
for (int b=1;b<=n;b++)
for (int c=1;c<=n;c++)
if (i[b][a]+i[a][c]<i[b][c])
i[b][c]=i[b][a]+i[a][c]; //顺便利用Floyd算法,进行最短路径的更新。
}
printf("%d",ans);
return 0;
}

时间: 2024-10-10 23:46:27

最小环——Floyd变种算法(C++)的相关文章

Floyd最短路径算法

暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有4个城市8条公路,公路上的数字表示这条公路的长短.请注意这些公路是单向的.我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径.这个问题这也被称为“多源最短路径”问题. 现在需要一个数据结构来存储图的信息,我们仍然可以用一个4*4的矩阵(二维数组e)来存储.比如1号城市到2号城市的路程为2,则设e[1][2]

自编码器及相关变种算法简介

本文对自编码器(Auto-Encoder)算法及其相关变种算法进行简要介绍,其中包括 Regularized Auto-Encoder.Sparse Auto-Encoder.Denoising Auto-Encoder 和 Contractive Auto-Encoder,重点讨论各算法的基本思想及优化时所需目标函数的构造. 转自:http://blog.csdn.net/pi9nc/article/details/27711441 原文地址:https://www.cnblogs.com/y

最小环-Floyd

floyd求最小环 在Floyd的同时,顺便算出最小环. Floyd算法 1 for(k=1:k<=n:k++) 2 { for(i=1:i<k:i++) 3 for(j=i+1:j<k:j++) 4 if(d[i][j]+m[i][k]+m[k][j]<min) 5 min=d[i][j]+m[i][k]+m[k][j]: 6 for(i=1:i<=n:i++) 7 for(j=1:j<=n:j++) 8 if(d[i][k]+d[k][j]<d[i][j])

hdu 1874 畅通工程续 两种算法AC Floyd+Bellman-Ford算法 又是一波水题~~

畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 31655    Accepted Submission(s): 11564 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行

算法:最短路径之弗洛伊德(Floyd)算法

https://cloud.tencent.com/developer/article/1012420 为了能讲明白弗洛伊德(Floyd)算法的主要思想,我们先来看最简单的案例.图7-7-12的左图是一个简单的3个顶点的连通网图. 我们先定义两个二维数组D[3][3]和P[3][3], D代表顶点与顶点的最短路径权值和的矩阵.P代表对应顶点的最短路径的前驱矩阵.在未分析任何顶点之前,我们将D命名为D(-1),其实它就是初始图的邻接矩阵.将P命名为P(-1), 初始化为图中的矩阵. 首先我们来分析

Algorithm --&gt; Dijkstra和Floyd最短路径算法

Dijkstra算法 一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径.下面证明该性质的正确性. 假设P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,则有P(i,j)=P(i,k)+P(k,s)+P(s,j).而 P(k,s)不是从k到s的最短距离,那么必定存在另一条从k到s的最短路径P'(k,s),那么 P'(i,

(floyd+匈牙利算法) poj 3216

O - Repairing Company Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 3216 Description Lily runs a repairing company that services the Q blocks in the city. One day the company receives M repai

(floyd+匈牙利算法) poj 2594

P - Treasure Exploration Time Limit:6000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2594 Description Have you ever read any book about treasure exploration? Have you ever see any film about treasure explor

hdu 1599 find the mincost route (最小环与floyd算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1599 find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2530    Accepted Submission(s): 1006 Problem Description 杭州有N个景区,景区之间有一