![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
wow_awsl_qwq
这个作者很懒,什么都没留下…
展开
-
C++模板 单源最短路 多源最短路 最小生成树
void dijkstra(int u) { memset(dist,0x3f,sizeof dist); dist[u]=0; for(int i=0;i<n;++i) { int t=-1; for(int j=0;j<n;++j)//根据编号从0开始 { if(st[j]==false&&dist[j]<dist[t])t=j; } st[t]=true; for(int j=0;j<n;++j) { if(d原创 2022-04-13 12:05:03 · 615 阅读 · 0 评论 -
史东薇尔城 单源最短路
题目描述LOST GRACE DISCOVERED史东薇尔城坐落于宁姆格福与利耶尼亚湖的交界处,地势险要、易守难攻,是连接南北重要的交通枢纽。史东薇尔城不仅地理位置重要,内部更是错综复杂,第一次来到这里的褪色者往往会迷路。魔法师MaverickFW接手了大量的来自史东薇尔城的任务委托,每一次执行任务MaverickFW都需要从自己当前的所在地去往史东薇尔城再跑去任务地点。我们将地图简化为一张无向图,而史东薇尔城是一号结点。MaverickFW想知道自己每次任务最短需要跑多远,他每次会告诉你自己当前所在结原创 2022-03-26 19:20:52 · 749 阅读 · 0 评论 -
可对k条路径免费条件下的单源最短路
保证不含重边,没有自环,且图联通输出格式:输出一行一个整数,为最少花费。输入样例:5 8 11 41 5 24 5 93 5 81 2 52 5 23 4 21 3 62 4 9输出样例:2动态规划解法#include <bits/stdc++.h>using namespace std;const int N=10005,M=N*10,INF=0x3f3f3f3f;int n,m,k;int e[M],ne[M],w[M],h[N],idx;i.原创 2022-03-11 15:09:55 · 476 阅读 · 0 评论 -
图论 拓扑排序 最短路 的几个模板(Java)
topsort static boolean topsort() { hh=0;tt=-1; for(int i=1;i<=n;++i) { if(d[i]==0)q[++tt]=i; } while(hh<=tt) { int t=q[hh++]; for(int i=h[t];i!=-1;i=ne[i]) { int j=e[i];原创 2022-03-04 22:26:31 · 344 阅读 · 0 评论 -
图论--匈牙利算法 二分图的最大匹配
匈牙利算法的find(),其实是递归实现,每次让前面某一个点尝试换一个匹配点的时候,前提一定是它能找到另外的点,才会换,所以每次find()是不会让前面已经匹配的数量减少的。因此,依次对每个点find(),每一个true,res++,最终res就是答案。每对一个点find()前还要先初始化st[]标记,因为st[]只是用于从某个点开始的find() static boolean find(int x) { for(int i=h[x];i!=-1;i=ne[i]) { int j=e[原创 2022-01-28 12:40:40 · 72 阅读 · 0 评论 -
图论--二分图 染色法判定二分图
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 u 和 v,表示点 u 和点 v 之间存在一条边。输出格式如果给定图是二分图,则输出 Yes,否则输出 No。数据范围1≤n,m≤105输入样例:4 41 31 42 32 4输出样例:Yesimport java.util.*;public class Main{ static int N=10000.原创 2022-01-28 10:42:29 · 406 阅读 · 0 评论 -
图论--Kruskal算法求最小生成树 稀疏图
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含三个整数原创 2022-01-27 17:45:02 · 220 阅读 · 0 评论 -
图论--Prim算法求最小生成树 稠密图
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含三个整数原创 2022-01-27 16:43:52 · 304 阅读 · 0 评论 -
图论--最小生成树 二分图 算法
一般:稠密图:prim稀疏图:kruskal算法原创 2022-01-27 16:26:10 · 279 阅读 · 0 评论 -
图论-多源最短路 Floyd求最短路
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定 k 个询问,每个询问包含两个整数 x 和 y,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出 impossible。数据保证图中不存在负权回路。输入格式第一行包含三个整数 n,m,k。接下来 m 行,每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。接下来 k 行,每行包含两个整数 x,y,表示询问点 x 到点 y 的最短距离。输出格式共 k 行,每行输出一原创 2022-01-27 15:22:56 · 108 阅读 · 0 评论 -
图论--单源最短路 spfa判断负环
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你判断图中是否存在负权回路。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式如果图中存在负权回路,则输出 Yes,否则输出 No。数据范围1≤n≤2000,1≤m≤10000,图中涉及边长绝对值均不超过 10000。输入样例:3 31 2 -12 3 43 1 -4输出样例:Yeshttps://w原创 2022-01-27 14:00:23 · 94 阅读 · 0 评论 -
图论--单源最短路 spfa求最短路
spfa的限制:不存在负环(不需要太关心这个限制),或者限制了走的边数一般的最短路问题里面都不存在负环(99.9%)。。。很多的正权图都可以用spfa:(被卡了就换成堆优化版的dijkstra算法)给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。数据保证不存在负权回路。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存原创 2022-01-26 14:56:32 · 107 阅读 · 0 评论 -
图论--单源最短路 负权边 Bellman-Ford 有边数限制的最短路 java
如果存在负权回路,那么最短路可能不存在(不存在但是能求出一个值,因为这个算法是按迭代次数不停更新的,不存在负回路的点,n次内就能稳定,而对存在负回路的点,则一直更新)能求出最短路说明不存在负权回路迭代次数k的实际意义:经过不超过k条边走到每个点的最短路的距离第n次迭代后,有更新的话,说明存在一条经过n条边的最短路径,那么路径上有n+1个点,而点数总共为n,说明存在负环(自环:权值为负)。(这个算法可以用来找负环,但是一般用spfa来做)给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环.原创 2022-01-26 11:56:13 · 229 阅读 · 0 评论 -
图论--单源最短路-稀疏图 Dijkstra求最短路 II
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 −1。数据范围1≤n,m≤1.5×105,图中涉及边长均不小于 0,且不超过 10000。数据保证原创 2022-01-26 00:09:29 · 570 阅读 · 0 评论 -
图论--单源最短路-稠密图 Dijkstra求最短路 I
https://www.acwing.com/problem/content/851/给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 −1。数据范围1原创 2022-01-25 21:21:01 · 386 阅读 · 0 评论 -
图论--最短路的五种算法 适用情况 及 复杂度
稠密图:边多的图: m=n^2(n是点数,m是边数)只考虑有向图,把无向图当成有向图Dijkstra:贪心Floyd:动态规划原创 2022-01-25 18:51:39 · 728 阅读 · 0 评论 -
图论--拓扑排序 有向图的拓扑序列 java
拓扑序列:序列中任意两个数,前面的数都存在指向后面的数的有向边,反之则不成立,用于有向无环图,类似于:确定工程施工顺序有向无环图又称为拓扑图https://www.acwing.com/problem/content/850/给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图转载 2022-01-25 14:17:36 · 534 阅读 · 0 评论 -
图论-图的遍历 图中点的层次 bfs
https://www.acwing.com/problem/content/849/给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。所有边的长度都是 1,点的编号为 1∼n。请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 a 和 b,表示存在一条从 a 走到 b 的长度为 1 的边。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。数据范围1≤n,原创 2022-01-25 12:27:28 · 237 阅读 · 0 评论 -
图论---图的遍历 树的重心 数组模拟邻接表 dfs java
题目链接:https://www.acwing.com/problem/content/description/848/给定一颗树,树中包含 n 个结点(编号 1∼n)和 n−1 条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数 n,表示树的结点数。接下来 n−1 行,每行包含两个整数 a 和 b,表示点 a 和点 b 之间存在一原创 2022-01-25 11:54:10 · 80 阅读 · 0 评论