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