图论
文章平均质量分 54
WTIAW.TIAW
这个作者很懒,什么都没留下…
展开
-
版本分支 蓝桥杯国赛2018 离线LCA Tarjin
题目描述小明负责维护公司一个奇怪的项目。这个项目的代码一直在不断分支(branch)但是从未发生过合并(merge)。现在这个项目的代码一共有 NNN 个版本,编号 1 ~ NNN,其中 1 号版本是最初的版本。除了 1 号版本之外,其他版本的代码都恰好有一个直接的父版本;即这 NNN 个版本形成了一棵以 1 为根的树形结构。如下图就是一个可能的版本树:1/ \2 3\ / \5 4 6现在小明需要经常检查版本 xxx 是不是版本 yyy 的祖先版本。你能帮助小明吗?输入描述第一行包原创 2021-06-01 20:52:02 · 192 阅读 · 0 评论 -
第十八章 数据结构 最短路径
文章目录求某一源点到其余各顶点的最短路径。迪杰斯特拉FlyodFlyod求某一源点到其余各顶点的最短路径。迪杰斯特拉1.没有路径2.只有一条路径, 则该路径即为最短路径3.存在多条路径, 则其中必存在一条最短路径思路:每次确定一条最短路径。而且每一次是在原来确定的最短路上进行访问。时间复杂度O(n2)O(n^2)O(n2)Flyod求任意一对顶点的最短路径。这种算法的时间复杂度显然是O(n3)O(n^3)O(n3)Flyod...原创 2020-05-20 18:31:22 · 305 阅读 · 0 评论 -
Java实现邻接表
package GraphBase;import java.util.*;public class ljtable { static int n, m; // 顶点数n,边数m static ArrayList<edge>[] G = new ArrayList[100005]; // 图G的邻接表 static class edge { // 边的终点编号v,边权...原创 2020-03-10 09:09:12 · 1192 阅读 · 0 评论 -
2019icpc沈阳区域赛 A + H题
题目链接A题题意:小伙找女朋友,看n个照片,每个照片有欺骗值,现在要更新真实值。对于第i个照片,前i - 1个比它欺骗值大的照片中的最小欺骗值为它的真实值。如果没有比它大的,那它的真实值就为0。思路:对于前i - 1个数,我们用set储存,同时使用set的自带函数upper_bound。这里需要用iterator迭代器将值表示出来。upper_bound返回的是储存地址,最后要用*来...原创 2020-03-07 21:10:06 · 503 阅读 · 0 评论 -
Chessboard poj2446 匈牙利匹配 + 图建模棋盘染色
思路:给你一个n * m的棋盘,有hole。问能否在不遮住hole的情况下,将棋盘全部用1 * 2的矩形覆盖。分析图形,使用匈牙利匹配奇数坐标和偶数坐标,看是否能完全匹配即可。#include<iostream>#include<vector>#include<cstring>using namespace std;int vis[2500], vi...原创 2020-01-24 10:41:59 · 2669 阅读 · 0 评论 -
匈牙利匹配法思路 + 模板
总体思路是 -—— 为后来的人腾地方 + 找位置。俩个标记数组vis [i]- 记录出现过的点link【i】 - 代表 与 i配对的点Find函数 + Vector 单向建边。核心代码:判断该点是否已有配对 || 如果已经配对则使配对方修改对象,(腾地方 + 找位置)。模板传送门#include<iostream>#include<cstring>#i...原创 2020-01-23 21:15:33 · 256 阅读 · 0 评论 -
The Accomodation of Students 二分图染色 + 匈牙利最大匹配
传送门思路:n个同学,有的相互认识,问能否划分两组互相不认识的同学,并求出最大的相互认识的同学对数。先用染色法判断是否是二分图,再使用匈牙利匹配法判断最大的匹配数。#include<iostream>#include<vector>#include<cmath>#include<cstring>using namespace std;...原创 2020-01-23 19:26:27 · 147 阅读 · 0 评论 -
D - Place the Guards UVA - 11080
传送门思路:二分染色。根据题意,要求求出所需要的最少士兵。由于图不一定全部联通,所以要求出每一个联通图的最小士兵,同时 不要忘记独立的交汇口也需要有士兵。Ac代码#include<iostream>#include<vector>#include<cmath>#include<cstring>using namespace std;v...原创 2020-01-22 21:17:47 · 223 阅读 · 0 评论 -
图论:二分图染色思路 + 例题
思路:邻接表建图从某一点u作为父类开始染色1 如果发现u与v颜色相同 那么flag = false 即该图不是二分图。2 如果v并未染色 那么将其染成相反的颜色 再以v作为父节点找相邻的点染色3 如果u与v颜色相反 那么再去寻找u相邻的其他边注意!如果是连通图 那么一次dfs即可 如HDU3478AC代码:题意不用判断是否为连通图。一次dfs即可#include<iostre...原创 2020-01-21 22:40:48 · 563 阅读 · 0 评论 -
P2762 太空飞行计划问题 最大权匹配图dinic
思路:1.由于自己的打不出来,只能接用翔神的了。(洛谷的评测太坑)。2.我们可以先建立一个s和一个t,然后将题目中的实验连接起来,此时的边权为收益。3.然后在实验和器材和花费上建立一条边,此时边权为INF。4.然后在器材和t上建立一条边,#include <iostream>#include <cstdio>#include <sstream>#...原创 2019-10-15 18:38:44 · 149 阅读 · 0 评论 -
hdu3488 Tour km求完备匹配最小值 带图解析
传送门题意:给你一些 从某一景点到某一景点 的距离,让你求能否遍历全部景点,并且至少走一个环。思路:我们发现,只要遍历全部的景点一次,且又回到了起点,那么一定会有一个完备匹配,我们可以将一个景点拆成两个点,比如u -> u和u’。将这两个点一个放在x部,一个放在y部。然后按照题意连接,如果图中存在一个环的话,那么下图x集和y集一定存在完备匹配。比如:路径:1-4-5-3-2-1理解了...原创 2019-10-14 18:09:09 · 238 阅读 · 0 评论 -
hdu1150 Machine Schedule 匈牙利算法 最小点覆盖=最大值匹配
传送门思路:最小点覆盖=最大值匹配红色标记的继为最小点覆盖,每条边代表每台机器。我们发现只要三个点,就能覆盖所有机器。#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cstdlib>#include<qu...原创 2019-10-13 19:08:07 · 160 阅读 · 0 评论 -
奔小康赚大钱 HDU - 2255最大权值匹配 KM模板
传送门思路:原来想用dfs做,然后果断wa,后来才知道要用KM最大权值匹配,学习了。AC代码:#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cstdlib>#include<queue>#inclu...原创 2019-10-13 18:32:36 · 163 阅读 · 0 评论 -
hdu6734 Decimal判断是否为无限小数 判断质因子
传送门思路:只要判断该数是否和10有公共的质因子即可。判断方法 while(t != 1) { t = gcd(t, x); x = x / t; if(t % x == 0) { flag = 1; break; }...原创 2019-10-13 16:57:44 · 302 阅读 · 0 评论 -
hdu2063过山车 匈牙利算法&最大流求解二分图
传送门思路:求男孩和女孩的配对个数。裸的匈牙利算法,用dinic建图直接求最大流也行。匈牙利算法#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cstdlib>#include<queue>#incl...原创 2019-10-13 16:21:29 · 221 阅读 · 0 评论 -
hdu5889 Barricade spfa + dinic 弧优化
思路:将图中的最短路挑出来,加到网络中,跑一遍最大流。dis[v]-dis[u]==1判断是否在最短路中。#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<ctime>#include<climits>#inclu...原创 2019-10-13 11:31:01 · 159 阅读 · 0 评论 -
网络流问题-最大流最小割
简单易懂大佬博客原创 2019-10-12 22:18:49 · 231 阅读 · 0 评论 -
Hdu1533 Going Home 最小费用最大流
题意:用H来代表人类,m来代表房子,问每个人类到每个房子的总的 最短距离 。思路:直接套模板就行,注意字符判断时不要带有空格。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#define mem(a...原创 2019-10-12 19:59:01 · 213 阅读 · 0 评论 -
I Magic_Potion 建模 最大流 dinic&Ek
建模Dinic 31ms#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<ctime>#include<climits>#include<algorithm>#include<complex...原创 2019-10-12 09:18:54 · 213 阅读 · 0 评论 -
P2756 飞行员配对方案问题 二分图匹配 Ek&匈牙利算法
/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-08-20.19.40* Talk is cheap.Show me your code.*/#include<iostream>#include<cstring>#include&...原创 2019-10-09 12:26:21 · 246 阅读 · 0 评论 -
The Necklace UVA - 10054 建模无向图判断欧拉回路
传送门题意:给你n颗珠子,珠子有两面,只有两面相同才能相连,问你能否将这些珠子串成一串。思路:就是求欧拉回路的问题,不过建图应该是无向图。所以是求无向图的欧拉回路。因为数据给的少,所以直接邻接矩阵即可。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-06-21...原创 2019-10-07 17:19:10 · 146 阅读 · 0 评论 -
P1359 租用游艇 dfs/dp/floyd/dijk/spfa DAG(有向无环图)
传送门思路:dfs剪一下枝,竟然能过。当前的大于最小值,88. if(sum>minnn) return ;/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-02-15.18.22* Talk is cheap.Show me yo...原创 2019-10-02 17:23:41 · 221 阅读 · 0 评论 -
P3376 网络最大流 模板 dinic&Ek
传送门思路:模板题拿来熟悉代码用dinic全面优化#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<ctime>#include<climits>#include<algorithm>#includ...原创 2019-10-08 20:51:41 · 152 阅读 · 0 评论 -
链式前向星优化spfa模板
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn = 100100, INF = 0xfffffff;...原创 2019-10-08 17:59:54 · 178 阅读 · 0 评论 -
Silver Cow Party dijkstra 邻接矩阵
题意:floyd 会tle ,只有靠杰哥了。题目的意思是让你从n个点到x点的每条最短路径中选取 某一点前往x点和返回原来的点所耗费的时间之和 最大的那一组,并输出最大值。思路:迪杰斯特拉搞一搞,这里会用到转置矩阵,从而实现求出前往x点和返回x点两条路径。(稠密图用邻接矩阵!!)/*** From:* Qingdao Agricultural University* Created by ...原创 2019-10-04 22:37:58 · 169 阅读 · 0 评论 -
Heavy Transportation spfa算法
题目题意:这道题的意思和 Frogger 很像。求所有路径中每个路径最小的一段道路,这些道路组成一个集合,再求这个集合中最大的数。思路:`核心代码for(int i=head[n];i!=-1;i=Node[i].next){Node e=Node[i];if(d[e.v]<min(d[u],e.d){d[e.v]=min(d[u],e.d);}`#include <...原创 2019-10-04 20:53:45 · 141 阅读 · 0 评论 -
Frogger floyd算法
Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of tourists' sun...原创 2019-10-04 19:19:08 · 201 阅读 · 0 评论 -
Til the Cows Come Home spfa 算法
思路:板子题,直接套模板即可。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-02-20.59.50* Talk is cheap.Show me your code.*/#include<iostream>#include<cstrin...原创 2019-10-04 17:16:58 · 133 阅读 · 0 评论 -
P1636 Einstein学画画 判断是否存在euler path
传送门题意:给你点和边,对于一个No directed graphy,判断画这个图需要几笔。思路:观察可以发现每多出两个奇数度顶点,画的次数就加1.根据euler图的定义若恰通过图中每条边一次回到起点,则称该回路为欧拉(Euler)回路。具有欧拉回路的图称为欧拉图。定理1:一个无向图是欧拉图,当且仅当该图所有顶点度数都是偶数。一个有向图是欧拉图,当且仅当该图所有顶点度数都是0``(...原创 2019-10-02 15:05:29 · 184 阅读 · 0 评论 -
计蒜客 关系查询 map
题目:/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-02-11.57.31* Talk is cheap.Show me your code.*/#include<iostream>#include<cstring>#inc...原创 2019-10-02 13:08:35 · 391 阅读 · 0 评论 -
图论 存入点和边权-邻接表
101 2 32 4 43 4 25 6 17 9 010 1 -78 9 -49 5 103 7 113 8 20/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-01-21.20.40* Talk is cheap.Show me you...原创 2019-10-02 11:36:59 · 699 阅读 · 0 评论 -
C - Lunar New Year and a Wander 优先队列 CodeForces - 1106D
地址;添加链接描述Lunar New Year is approaching, and Bob decides to take a wander in a nearby park.The park can be represented as a connected graph with n nodes and m bidirectional edges. Initially Bob is at...原创 2019-09-04 20:43:39 · 239 阅读 · 0 评论 -
F - Wormholes spfa判断负环
传送门题意:艾高比较差QAQ。意思是农夫发现了虫洞,他发现从一个点到另一个点会花费一些时间,存在一些点到点可以到退时间。问farm是否可以通过一个回路回到过去。就是问是否存在一条负权的边。思路:spfa判断负环模板即可,要注意,有些虫洞是可以来回的,所以一条边要添加两次。#include <iostream>#include <cstdio>#include &l...原创 2019-10-05 15:29:00 · 150 阅读 · 0 评论 -
Wormholes
传送门题意:可以穿过一个虫洞到达另一个,这其中会穿越一些年数和倒退一些年数,教授想研究Bigbang 当然是想实现回到过去,那么只要存在一个负环,教授就可以无限的倒退回去了。思路:spfa判断负环即可,在这里,所构造的图是一个有向图。#include <iostream>#include <cstdio>#include <cstring>#incl...原创 2019-10-05 16:11:24 · 201 阅读 · 0 评论 -
G - MPI Maelstrom floyd atoi()
传送门题意:因为是无向图,所以给出半个邻接矩阵,让你求1到每个点的最小距离中,最大的那一个距离。思路:floyd求最短路即可。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-03-09.33.52* Talk is cheap.Show me your co...原创 2019-10-05 17:36:07 · 222 阅读 · 0 评论 -
hdu1875 畅通工程再续 最小生成树
传送门思路:给你坐标点,让你求一条经过每个点的最短路径。题意:最小生成树做即可。注意特判条件和位置。应放在kru中。#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>const int maxn = 1e6 + 5;using namespace s...原创 2019-10-08 09:58:34 · 148 阅读 · 0 评论 -
hdu1102Constructing Roads 最小生成树
传送门题意:求最链接所有村庄的最短路径。思路:最小生成树板子题,在这里卡了p[find(a)] = find(b);!!!!!下次一定注意,每次都要查找它的父亲再更换,而不是单纯的更换儿子结点。因为它的结点是不断的加入更新的。#include<iostream>#include<algorithm>const int maxn = 1e6 + 5;using...原创 2019-10-07 22:43:36 · 157 阅读 · 0 评论 -
hdu1233 还是畅通工程 最小生成树 并查集
传送门#include<iostream>#include<algorithm>const int maxn = 1e6+5;using namespace std;struct node { int u, v, w;}e[maxn];int p[maxn];bool cmp(node x, node y) { return x.w <...原创 2019-10-07 21:25:15 · 169 阅读 · 0 评论 -
图论五百题
图论500题慢慢刷吧原创 2019-10-07 20:01:33 · 166 阅读 · 0 评论 -
最小生成树 欧拉回路/道路 并查集
欧拉道路原创 2019-10-06 22:06:14 · 358 阅读 · 0 评论