![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
A_Pathfinder
这个作者很懒,什么都没留下…
展开
-
一本通-> 提高篇-> 图论-> 强联通分量
一本通:提高篇:图论:强联通分量:1513:【 例 1】受欢迎的牛受欢迎的奶牛只有可能是图中唯一的出度为零的强连通分量中的所有奶牛,所以若出现两个以上出度为0的强连通分量则不存在明星奶牛,因为那几个出度为零的分量的爱慕无法传递出去。那唯一的分量能受到其他分量的爱慕同时在分量内相互传递,所以该分量中的所有奶牛都是明星。#include<bits/stdc++.h>using...原创 2020-01-05 19:08:18 · 897 阅读 · 0 评论 -
2_SAT
2_SAT有N个变量,每个变量只有两种可能的取值。再给定M个条件,每个条件都是对1两个变量的取值限制。求是否存在N个变量的合法赋值,使M个条件均被满足。我们可以把此类问题转换成统一的形式:若变量AiA_iAi赋值为AipA_ipAip,则变量AjA_jAj必须赋值为AjqA_jqAjq,其中q,p为{0,1};解:首先,对于这张图中的每个强连通分量中的点一定要么同时选,要么同时不选...原创 2020-01-05 19:05:34 · 273 阅读 · 0 评论 -
PAT 甲 1131 Subway Map (30 分)
1131 Subway Map (30 分)题目大意:给一张地图,无向,给出n个行线,起点终点,不同行线要通过中转站转车,问最少经过多少站到达,如果站数相等,再根据最少转车次数判断。要求输出站数,和每次转车的行线,这条行线的起点终点。输入:47 1001 3212 1003 1204 1005 1306 77979 9988 2333 1204 2006 2005 2004 2003...原创 2019-11-21 19:58:35 · 278 阅读 · 0 评论 -
欧拉路
欧拉回路,也就是著名的哥尼斯堡七桥问题,也成一笔画问题。问题描述:是否可以找到一种方案,使得人们从自己家里出发,不重复走每一座桥,然后回到家中?在了解欧拉回路前,我们再了解一下知识。有向图、无向图、混合图的欧拉通路、欧拉回路。无向图:存在欧拉回路的条件:原图连通,每个结点均为偶度结点。存在欧拉通路的条件:存在欧拉回路,或原图连通,有两个结点为奇度结点,其他结点均为偶度结点。有向图:...原创 2019-10-13 12:43:12 · 261 阅读 · 0 评论 -
1553:【例 2】暗的连锁 树上差分
题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1553差分能够更好的解决区间问题。在讲树上差分之前,首先需要知道树的以下两个性质:(1)任意两个节点之间有且只有一条路径。(2)根节点确定时,一个节点只有一个父亲节点这两个性质都很容易证明。那么我们知道,如果假设我们要考虑的是从u到v的路径,u与v的lca是a,那么很明显,如果路径中...原创 2019-09-19 20:31:53 · 765 阅读 · 0 评论 -
严格次小生成树 讲解+模板
了解次小生成树(严格次小生成树) 之前,需要先了解前置知识。最小生成树:https://blog.csdn.net/A_Pathfinder/article/details/88125032最近公共祖先 :https://blog.csdn.net/A_Pathfinder/article/details/101034332首先我们看什么是严格,我们求得最小生成树准确来说是不严格最小生成树...原创 2019-09-25 10:56:16 · 719 阅读 · 0 评论 -
割点和桥
先介绍一些基础定义:(都是针对无向图)点连通度与边连通度在一个无向连通图中,如果有一个顶点集合V,删除顶点集合V以及与V中顶点相连(至少有一端在V中)的所有边后,原图不连通,就称这个点集V为割点集合。一个图的点连通度:最小割点集合中的顶点数。如果一个边集合,删除这个边集合后,原图不连通,就称这个边集为割边集合。一个图的边连通度:最小割边集合中的边数。点双连通:如果一个无向连通图的点连通...原创 2019-10-08 21:13:16 · 1025 阅读 · 0 评论 -
P3469 [POI2008]BLO-Blockade
传送门题目大意:Byteotia 城市有 n 个城镇,m条双向道路。每条道路连接两个不同的城镇,没有重复的道路,所有城镇连通。输出 n个数,代表如果把第 i 个点去掉,将有多少对点不能互通。这是一道求割点的经典题目,需要好好分析一下结果是怎么得来的。首先我们要明确一点,这里如果(1,3)两点不能互通,那么(3,1)也是不能互通的,即得出来不能互通的点需要乘2。还有一个注意点是我们去...原创 2019-10-09 11:14:15 · 459 阅读 · 0 评论 -
一本通->提高篇->图论->割点和桥:
一本通:提高篇:图论:割点和桥:1520:【 例 1】分离的路径题意:如何把有桥图通过加边变成边双连通分量如果叶子数(缩点后度为1的点)为1,则至少需要添加0条边;否则为(叶子数+1)/ 2;#include<bits/stdc++.h>using namespace std;const int N = 2e5+100;int n,m,cnt=1; //cnt从1...原创 2019-10-10 21:36:56 · 767 阅读 · 0 评论 -
倍增求lca
倍增求lca 模板求最近公共祖先lca(Least Common Ancestors),什么是公共祖先,给定一棵树,若节点z即使节点x的祖先,也是节点y的祖先,则称z是x,y的公共祖先,在x,y的所有公共祖先中,深度最大的节点称x,y的最近公共祖先,记做LCA(x,y)。举个例子LCA(4,5) = 2,LCA(5,6)=1,LCA(2,3)=1;那么如何求LCA先给出一张我们接下来要...原创 2019-09-19 20:03:07 · 441 阅读 · 0 评论 -
1496:【例 3】架设电话线
传送门这里给出3种方法求解(因为感觉都蛮有用的)。第一种:dp+最短路dp[i][j]:从1号点到i号点已经用了j次变成0边后路径上的最长边.若有一跳从u到v长度为w的边,则 d[v][num] = max(d[u][num],w);用dis[u][num] 更新dis[v][num+1]的最小值分别更新:d[v][num] = max(d[u][num],w);...原创 2019-09-05 19:52:37 · 1238 阅读 · 0 评论 -
拓扑排序 用dfs或者bfs
拓扑排序是找DAG(有向无环图)的关键路径拓扑排序从数据结构原理上说是不断找对应入度为0的点,找到就删去这个点和从此点出的边。这对应的其实是用bfs的方法,所以用bfs得到的其实除了判断还有每次找的出度为0的点(顺序不唯一),而dfs得到的是这个环的路径。(反正我一般都是并查集判断的。。)先说bfs:int in[N];queue<int> qq;void print...原创 2019-03-02 19:07:22 · 609 阅读 · 0 评论 -
最小生成树 模板
首先明确树的定义:在无向图中,联通且不含圈的图称为树。最小生成树一般解决类似村边很多路,修一条能连通所有村且路的费用最少(权值最小);下面介绍prim算法和kruskal算法:两者区别:Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣。Prim是以更新过的节点的连边找最小值,Kruskal是直接将边排序。prim算法:类似迪杰斯特拉算法,都是从某个顶点出发,不断添...原创 2019-03-04 17:06:48 · 234 阅读 · 0 评论 -
最短路 dijkstra , floyd 和spfa算法 模板
最短路算法还有spfa算法,但是对于比赛的一些数据来说,单纯的求最短路还是用D算法更快更稳定,但是对于有负权值的边来说,就必须用到spfa算法了,所以放在下次说。floyd 5 行算法,求各个点之间的最短路,相当于遍历每个边,做传递,a-c,c-b,那么a就可以通过c到b。时间复杂度O(n^3)ps:一般就这种用邻接矩阵存好点模板代码:void read(){ memset(g...原创 2019-03-14 17:00:43 · 328 阅读 · 0 评论 -
最大团 hdu1530
最大团也就是最大完全图给定一个无向图 G=(V,E),若对任意两个顶点 u、v ∈U,有 (u,v)∈E,则称 U 是 G 的完全子图,G 的完全子图 U 称为图 G 的团。 极大团:一个团不被其他任一团所包含,即其不是任一团的真子集 最大团:在 V 中取最多的点,满足任意两点间相互连接 最大独立集:在 V 中取最多的点,满足任意两点间不连接(最大独立集数=补图的最大...原创 2019-07-23 10:29:21 · 332 阅读 · 0 评论 -
牛客 free 分层求最短路
给你n个点,m个边,s开始点,t结束点,有k次机会可以把m任意边权值变成0,问最短路是多少。传送门对于一般的求最短路,我们用一个一维dis[]就可以表示出源点到各个点直接的最短关系,由于这里考虑到可以有k次机会能能把权值变成0,所以我们要对每条边进行考虑,变0还是不变0,并且要考虑k次,因此我们用dis[i][j]来表示,i表示是用了i次机会把权值变成0,j是我们要求的点,于是我们就相当于...原创 2019-08-05 22:04:23 · 249 阅读 · 0 评论 -
Bellman_Ford算法 SPFA算法
用spfa 算法求关于有负权边的最短路。每次从队列中取出一个节点X,遍历与X相通的Y节点,查询比对 Y的长度 和 X的长度+ X与Y的长度 如果X的长度+ X与Y的长度 >Y的长度,说明需要更新操作。 1).存入最短路。 2).由于改变了原有的长度,所以需要往后更新,与这个节...原创 2019-09-02 13:18:14 · 227 阅读 · 0 评论 -
floyd求最短环路径 及其路径保存 //1494:【例 1】Sightseeing Trip
传送门再次刷新了我对floyd的认知,因为涉及到了可模板部分,单独放一篇。//floyd求最短环路径 及其路径保存 #include<bits/stdc++.h>using namespace std;const int N = 310; const int INF = 0x3f3f3f3f;typedef long long ll;int n,m,ans = I...原创 2019-09-03 20:06:33 · 498 阅读 · 0 评论 -
1495:【例 2】孤岛营救问题
传送门 //因为一本通上有一个测试点错了,所以给洛谷的测试这题大部分都是用bfs + 状压去做,但是一本通里把这题放在了最短路上,虽然用最短路的时间空间都比bfs要差,但是这是一道很好的去训练分层最短路的题。BFS版:bfs把每个种类的钥匙都单独分成一层,然后根据我拿了钥匙的状态去找到我现在应该在的层,再bfs搜索最短路。#include<bits/stdc++.h>...原创 2019-09-04 14:07:06 · 1240 阅读 · 0 评论