
图论
Layne...
遇事不决,可问春风
展开
-
实验四:图的构造与遍历
#include<bits/stdc++.h>#define MVnum 100#define MaxInt 32767using namespace std;///邻接矩阵typedef struct{ char vexs[MVnum]; int arcs[MVnum][MVnum]; int vexnum,arcnum;}AMGraph;/...原创 2019-11-24 16:51:39 · 656 阅读 · 0 评论 -
最小生成树(Prim / Kruskal)
Kruskal算法(加边法)思路:首先对边的权值从小到大进行排序,而后遍历查看每一条边,循环以下步骤:1)若该边两端顶点分属不同连通分量,则将此边加入,之后将其两端顶点合并为同一个连通分量;2)若该边两端顶点已属于同一连同分量,则舍弃,继续查看下一条权值最小的边。Code:#include<bits/stdc++.h>using namespace std;...原创 2019-11-27 17:57:00 · 198 阅读 · 0 评论 -
最小生成树(MST)——模板题
题目:Description给出一个无向网,求该无向网的最小生成树。各条边的权重不超过100000。Input输入的第一行是一个整数N,表示该网的顶点个数。 3 ≤ N ≤ 100接下来是N行,每行N个整数,表示每个顶点到其余顶点的距离。Output输出该最小生成树的权重。Sample Input40 4 9 214 0 8 179 8 0 1621 17 16 0Sa...原创 2019-07-09 17:17:43 · 800 阅读 · 1 评论 -
2019南昌网络赛B. Fire-Fighting Hero( SPFA+超级源点 )
传送门题意有V个灭火点(数字1到V),这些灭火点有E条道路相互连通。现有一个消防英雄在点S,消防队分布在K个点,比较消防英雄到各个灭火点的最短路的最大值乘以系数1/C的值和消防队到各个灭火点的最短路的最大值,较小的一个获胜,输出获胜一方的最短路的最大值(若为消防英雄则输出不乘以1/C的值,平局也为消防英雄胜丽)。题解如果不建立一个源点的话,每个消防队的点都要去...原创 2019-09-08 20:48:00 · 319 阅读 · 0 评论 -
Cow Traffic(正反向建图+DAG拓扑排序)
题意有N(1<=N<=5000)个点,m条边(1<=M<=50000)。起点可以是任何一个入度为0的点,终点是N。求从起点到终点的所有路中,经过次数最大的一条路。输出经过次数。(规定每个点需要连接到编号更大的点,且不存在循环)题解该图为DAG(有向无环图),可利用拓扑排序,正反向建图分别进行两次拓扑排序。根据乘法原理,在一条边M(u-&g...原创 2019-10-29 20:29:00 · 284 阅读 · 0 评论 -
拓扑排序【Kahn算法(bfs)和dfs求拓扑序列及判环】
拓扑排序对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,该排序满足这样的条件——对于图中的任意两个结点u和v,若存在一条有向边从u指向v,则在拓扑排序中u一定出现在v前面。当且仅当一个有向图为有向无环图(DAG)时才存在对应于该图的拓扑排序。每一个有向无环图都至少存在一种拓扑排序。拓扑排序的实现...原创 2019-11-04 22:20:00 · 785 阅读 · 0 评论 -
分道扬镳(DFS+剪枝+邻接表)
题目:Time Limit: 300msDescription编号为1…N 的N个城市之间以单向路连接,每一条道路有两个参数:路的长度和通过这条路需付的费用。Bob和Alice生活在城市1,但是当Bob发现了Alice玩扑克时欺骗他之后,他决定与她翻脸,离开城市1前往城市N。Bob想尽快到达城市N,但是他的钱不多。希望你帮助Bob找到一条从城市1到城市N的总费用不超过Bob的承受能力的最...原创 2019-05-26 23:13:38 · 509 阅读 · 1 评论 -
邻接表之链式前向星
链式前向星比vector邻接表在内存性能和时间性能上更好。链式前向星用法详见以下模板代码:#include<bits/stdc++.h>using namespace std;const int maxn=1e3+10;//最大点数const int maxm=1e6+10;//最大边数struct node{int to,w,next;}edge...原创 2019-09-13 21:35:00 · 408 阅读 · 0 评论 -
单源最短路——Dijkstra算法
单源最短路径:一个点(源点)到其余各个顶点的最短路劲#include<stdio.h>#include<string.h>#define inf 99999999int a[1002][1002];int main(){ memset(a,inf,sizeof(a));///若题目有重边,则需要先将邻接矩阵初始化为inf,在后面读入边的时候再加if判断...原创 2019-03-30 10:31:19 · 436 阅读 · 0 评论 -
Floyd-Warshall算法
Floyd-Warshall算法是求一个图中任意两点之间的最短路径长度的算法。题目:给出一个有向图,请计算图中任意两个顶点之间的最短路径,及其长度。Input第一行是该有向图的 顶点数n ( 0 < n < 500 )(注:图有n个顶点,首个顶点的编号是0。 )第二行是该有向图的 边数e ( 0 < e < n×n )接下来e行,每行三个整数 i 、j 和 ...原创 2019-03-27 13:32:05 · 629 阅读 · 0 评论