题意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径。但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄。这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在村庄内部可使用。另外,在城市或村庄内部的时间不计。 析:先预处理出来使用工具能到达的距离,这个可以用
转载
2017-10-27 12:44:00
111阅读
Dijkstra,Floyd就不说了,这种算法的用途是求解单源最短路径, 举个例子,用这两个算法可以求出0到1.2.3.4的最短路径,可是我只需要你求0到3的最短路径,这时你就可以用DP了,为啥要扯上搜索,是因为权值为1的最短路就是搜索粘一个用DP求最短路径的链接:http://wenku.baidu.com/link?url=uaaG3egZKZtEiUiSWtlK28XI9O0Jw7R92s-
原创
2022-08-23 10:31:10
98阅读
不能确定胜负关系思路:floyd求传递闭包,统计没有关系的数量即可。bfs也可以floyd求传
原创
2017-08-17 08:55:58
61阅读
题目:http://poj.org/problem?id=3660题意:有n个奶牛在比赛,有m个比赛结果,形式如a,b代表a战胜了b,同时比赛关系是可以传递的,例如a战胜了b、b战胜了c,那么可以得到a战胜了c。问有多少只奶牛可以确定在这n只奶牛中的名次思路:可以发现,对于一个奶牛而言,如果战胜它的奶牛数和它打败的奶牛数之和等于n−1,那么这只奶牛的名次是可以确定的,于是可以用floyd算法求传递
原创
2017-08-16 10:50:49
58阅读
题目:http://poj.org/problem?id=1975题意:有n个珠子,n是奇数,每个珠子都有一个重量,有m个一对量小于它的珠子数量
原创
2017-08-17 09:04:59
22阅读
另一个求解最短路径的经典算法是Floyd,时间复杂度为O(n^3),所以
转载
2014-03-19 16:35:00
41阅读
2评论
Floyd 参考: "Floyd 算法" "第一篇Floyed题解" 模板题: "寻宝之路Clear And Present Danger" "牛
原创
2022-11-03 15:28:24
55阅读
原文 public class MatrixUDG { private int mEdgNum; // 边的数量 private char[] mVexs; // 顶点集合 private int[][] mMatrix; // 邻接矩阵 private static final int INF = ...
转载
2021-10-12 10:08:00
98阅读
2评论
有向图的连通性检查共4种方法,并查集性能最高,代码也短,优先推荐:
一、并查集
#include <bits/stdc++.h>
using namespace std;
const int N = 1010; //图的最大点数量
/**
共提供两组数据,样例1为不连通用例,样例2为连通用例
样例1:不连通,5号结点为独立的
5 4
1 2
2 3
3 4
1 4
转载
2021-08-13 16:26:35
625阅读
@Author :By Runsen贪心算法贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。假设我们有一个100kg的背包,可以装飞中物品,如何将所装的物品总价值最大 答案 20kg 黑豆 ,30kg 绿豆 ,50kg 红豆贪心算法的基本思路是从问题的某一个初始解出发一步一步地进行,根
转载
2023-11-24 12:58:58
46阅读
题目链接:https://www.acwing.com/problem/content/description/856/时/空限制:1s / 64MB题目描述给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。数据保证图中不存在负权回路。...
原创
2021-07-13 16:28:13
143阅读
题目链接:https://www.acwing.com/problem/content/description/856/时/空限制:1s / 64MB题目描述给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。数据保证图中不存在负权回路。...
原创
2022-02-03 14:17:46
43阅读
原本只会用Floyd算法的板子,今天上数据结构,老师讲了下,有点深入理解了,打通了任通二脉。作用 计算任
原创
2022-07-15 10:36:29
45阅读
这个算法都是用在求图中任意两个点之间的距离,时间复杂度为O(n3)代码如下#include<iostream>#include<algorithm>#include<string.h>using namespace std;int n,m,k;const int N=410;int d[N][N];void floyd(){ for...
原创
2021-07-09 14:51:04
109阅读
Dijkstra算法相比较,时间复杂度均为O(n2),但Floyd算法形式上更简单一些。一、 Floyd算法的原理首先记录两点间无其他中间顶点的距离(Vi---Vj),加一个顶点为中间点,记录加一个顶点后两点间的最短距离,以此类推,加完N个顶点后两点间的最短距离即可求出。二、算法实现D[i][j]表示从i到j点的距离。第一层循环依次加顶点,第二层循环遍历Vi点,第三层循环遍历Vj点。/*
转载
2023-07-24 17:50:29
167阅读
Floyd 求两点之间的最短路径 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; //floyd algorithm const int maxn = 10000; const int INF
原创
2021-08-31 15:54:19
175阅读
弗洛伊德(Floyd)算法过程:1、用D[v][w]记录每一对顶点的最短距离。2、依次扫描每个点,并以其为基点再遍历全部每一对顶点D[][]的值,看看是否可用过该基点让这对顶点间的距离更小。算法理解:最短距离有三种情况:1、两点的直达距离最短。(例如以下图)2、两点间仅仅通过一个中间点而距离最短。(...
转载
2014-12-25 11:58:00
119阅读
2评论
Floyd算法
正如我们所知道的,Floyd算法用于求最短路径。Floyd算法可以说是Warshall算法的扩展,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3)。Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所以,我们假设Dis(AB)为节点A到节点B的最短路径的距离,对于每一个节点X,我们
转载
2023-01-01 10:39:12
160阅读