![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论
最短路,二分图等等
_wjunjie
加油吧!
展开
-
TYVJ 1933 绿豆蛙的归宿(概率dp)
题目链接:https://www.luogu.org/problemnew/show/P4316题意翻译「Poetize3」题目背景随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿。题目描述给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点。绿豆蛙从起点出发,走向终点。 到达每一个顶点...原创 2019-04-02 22:00:17 · 165 阅读 · 0 评论 -
HDU 3072(有向无环图的最小树形图)
题意: G<N,M>,保证从“0”节点出发可以到达任意节点,每条边一个权值,相互可达的点之间边权可以忽略,求最小树形图。思路: 强连通缩点,然后得到一张单起点的可联通有向无环图,这种图求最小树形图就选择到达某点的最小边即可,详细仔细想想,这样出来有n-1条边,一定是最小树。(多起点的化就多棵最小树,构成一个最小森林)。 PS:有向...原创 2019-02-23 12:53:14 · 363 阅读 · 0 评论 -
POJ 3592(强连通缩点,拓扑最长路)
题意: n*m矩阵,*表示传送门,矩阵后面给出其到达的点,#障碍点,不可到达,数字表示该点的宝藏数,每个点可以往下或者往右走,获得宝藏后该点宝藏数变为0,问最多能获得多少宝藏。思路: 建图+强连通缩点+拓扑dp。难点: 构图:#点不可做为起点也不可以作为终点。总共n*m个点,标号别和其他量弄混。 强连通缩点:只对“1”所处的块tarjan即可,拓扑序同理...原创 2019-02-22 21:41:13 · 209 阅读 · 0 评论 -
牛客2019寒假训练营 Applese 的QQ群(二分+有向环判断)
题意: 不解释。 思路:n 很显然,这个问题要在线判断有向环,刚开始想用并查集,但并查集只能判断两点是不是在一个联通块中,更多的是判断无向环,而不是有向环。之后想到拓扑和dfs,尝试了拓扑,想一边添加新边一边生成拓扑序列,但实际上也只能是加一条边做一次拓扑排序(每次拓扑前均需清空拓扑序数组),无法做到一次遍历查询就生成整个图的拓扑序。所以时间复杂度还是o(M...原创 2019-01-30 00:45:41 · 146 阅读 · 0 评论 -
有向图强联通分量SCC & 缩点
直接上模板把,有些地方还是不好理解啊。 memset(head,0,sizeof(head)); memset(Next,0,sizeof(Next)); memset(ver,0,sizeof(ver)); memset(ins,0,sizeof(ins)); memset(dfn,0,sizeof(dfn));...原创 2019-01-02 22:47:54 · 205 阅读 · 0 评论 -
UVA 193(无向图最大团模板)
无向图最大团概念:点集中任意两点之间均可由边相连。无向图最大独立集:任意两点无边相连。定理:无向图最大独立集=补图最大团,反之亦然。(二分图那个很特殊)。暴力剪枝的模板时间复杂度:o(n*2^n):(怎么能过的,,,,,,)UVA 193 AC代码:#include<iostream>#define LL long long#define par pair...原创 2019-03-11 12:37:28 · 221 阅读 · 0 评论 -
POJ 1325 Machine Schedule
链接:http://poj.org/problem?id=1325题意: 有A、B两种机器,分别有n、m种(0~n-1,0~m-1)模式,k项工作,每项工作可以由A的第i种模式或者B的第j种模式来完成,机器由某一状态转化为其他状态时需要花费一定的时间,问完成所有工作所需要的最少的机器启动次数。Sample Input 5 5 100 1 11 1 ...原创 2019-01-14 00:23:08 · 125 阅读 · 0 评论 -
TYVJ1035 棋盘覆盖
链接:http://www.joyoi.cn/problem/tyvj-1035题意: N*M的棋盘,某些格子进制放棋子,最多能在棋盘上放置多少块1*2的骨牌,骨牌不能出界,相互不能重叠。思路: 一个骨牌占两个格子,将棋盘黑白染色,二分图最大匹配关键,找0要素和1要素:这里1要素是每个格子只能被一块骨牌覆盖,0要素不同色的格子不能被同一块骨...原创 2019-01-13 21:45:37 · 376 阅读 · 1 评论 -
codevs1069 关押罪犯(二分图判定+二分答案)
连接:http://codevs.cn/problem/1069/题意: 将n名犯人分成两部分,只有处在同一部分中的罪犯之间会产生冲突,问通过划分所能得到的最大的一组冲突(两个犯人之间) 的最小值。思路: 因为候选答案集合具有单调性,所以可以考虑二分答案。假设mid为当前可以产生的最大值,那么凡是相互矛盾<=mid的犯人可以待在一...原创 2019-01-13 17:19:16 · 363 阅读 · 0 评论 -
二分图总结
<一>基本概念:一、什么是二分图: 算法竞赛中定义:首先是一张N个点的无向图,其次这N个点可以分成A、B两个部分,A交B为空集,且同一集合中的点没有边相连(不同集合中的两个点之间可能有边相连也可能没有边相连,可能一条也可能多条)。 离散中定义(对偶图):任取一条边,该边的两个端点一定处于两个不同的集合中。二、判断某一无向图是不是二分图。...原创 2019-01-14 00:41:19 · 455 阅读 · 0 评论 -
POJ 3694 “缩点”/求割边+朴素求LCA+并查集路径压缩
题意: 给一张无向图,q次操作,每次在指定两点之间添加一条路径,问添加上这条路径之后图中有多少条割边。思路: 首先我们知道,v-dcc缩点后图(就是一棵树)中的各点之间通过割边连接,且包含原图中所有割边,当我们在原图中的某两点之间添加一条路径之后,对应v-dcc缩点后图中 的两个点之间的路径上的边将不在是割边,其路径长度可以用LCA的方法来求。确定这些边...原创 2019-01-02 19:40:16 · 244 阅读 · 0 评论 -
点双联通分量(V-DCC)的求法 & 缩点
用一个stack来维护,求割点的同时求点双联通分量就可以,这里要区别求边双联通分量时只需要在原图中去掉所有割边即可。另外因为一个割点可以同时属于多个不同的点双联通分量(普通点只属于一个),所以这里采用记录联通块中所包含的点的方法来记录每个点所属于的联通块们。初始化: tot=tot2=1; memset(head,0,sizeof(hea...原创 2018-12-31 20:18:30 · 1248 阅读 · 0 评论 -
边双联通分量(e-DCC)的求法 & 缩点
思路:求出给出的无向图中所有的桥,从原图中删去桥,得到到的所有联通块均为边双联通分量。所以有两个步骤:①tarjan求出所有割边并标记②dfs划分联通块#define ll long longusing namespace std;const int SIZE=100010;int head[SIZE];int ver[SIZE*2];int Next[2*SI...原创 2018-12-30 22:07:11 · 565 阅读 · 0 评论 -
(模板)割点判定
定理:①x不是搜索树上的根节点(dfs起点)时,x是割点当且仅当搜索树上存在x的一个子节点y,满足dfn【x】<=low【y】。#define ll long longusing namespace std;const int SIZE=100010;int head[SIZE];int ver[SIZE*2];int Next[2*SIZE];int dfn[...原创 2018-12-30 21:38:37 · 199 阅读 · 0 评论 -
割边判定(模板)
无向边(x,y)是桥,当且仅当搜索树上存在x的一个子节点y,满足:dfn【x】<low【y】。low【x】数组称作回溯值:指x的子树中的节点中或者这些子节点+x父节点(非树边连接)中时间戳值最小的点,#include <cstdio>#include <cmath>#include <cstring>#include <c...原创 2018-12-30 21:11:49 · 418 阅读 · 0 评论 -
12.24
最近去OJ上做了几道题,以例题为主。其次今晚看了下tarjan的割边的判定的小知识,其中时间戳、搜索树就不说了,在这里引入了一个新的量,“追溯值”low【x】,某些点中时间戳的最小值。最后判定定理感觉自己没有完全理解。明天再看看。 求桥的代码:#include <cstdio>#include <algorithm>#define N 10...原创 2018-12-24 01:12:15 · 203 阅读 · 0 评论 -
CH Round #56 异象石(”动态查询树节点之间的路径长度” 时间戳+树上倍增LCA+map/set)
链接:http://contest-hunter.org:83/contest/CH%20Round%20%2356%20-%20%E5%9B%BD%E5%BA%86%E8%8A%82%E6%AC%A2%E4%B9%90%E8%B5%9B/%E5%BC%82%E8%B1%A1%E7%9F%B3题意:给出一n节点的树状结构,m此操作,每次操作有3种选择,第一种:某块石头出现、第二种:某块石头消失...原创 2018-12-21 12:28:41 · 367 阅读 · 0 评论 -
POJ 3471(倍增LCA+树上差分)
链接:http://poj.org/problem?id=3417题意: 一张n节点连通无向图,n-1条树边,m条非树边。若通过先删一条树边,再删一条非树边想操作 将此图划分为不连通的两部分,问有多少种方案。思路: 经过“复杂”的思考会发现,将连通图分成两部分有以下两种方法。①某树边没有被任何非树边覆盖,那么只需要删除该树边即完成划分。②某树...原创 2018-12-18 16:36:54 · 256 阅读 · 0 评论 -
POJ 2230 手写栈求欧拉回路(有向图/无向图)
题意: 无向图求一条敲好经过所有边正反两次的回路。分析: 无向图求欧拉回路时走过一条边后要把两点之间的两条方向相反的边均标记,这题可以看做一张有向图中求欧拉回路,所以每次只标记一条边就可以了。AC代码:(注意手写栈的数据范围)#include<iostream>#define ll long longusing...原创 2019-01-02 20:27:25 · 261 阅读 · 0 评论 -
2-SAT
2-SAT问题就是类似于给出一个合取的布尔表达式,每个字句中有且只有两个变量(p、q),且每个字句代表一条限制条件,问是否存在一种解释使该式子是有效的。 解决方法:①抽象出2-SAT模型,以及限制条件;②根据限制条件们构图(忽略方向时图对称);(目前:*********难点*********,对于题目所给条件能表达出几个蕴涵关系不清楚)③t...原创 2019-01-10 16:02:50 · 142 阅读 · 0 评论 -
Dijkstra算法
1、最短路径问题介绍问题解释: 从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:迪杰斯特拉算法(Dijkstra算法) Floyed算法 SPFA算法 这篇博客,我们就对Dijkstra算法来做一个详细的介绍2、Dijkstra算法介绍 算法特点: 迪科斯彻算法使用了广度优先搜索解决赋权有向图或者无向图的单源...转载 2018-07-21 22:48:08 · 149 阅读 · 0 评论 -
Problem I 成都路口(最短路Dijkstra算法模板)
总体还是蓝白点的思想,和Prim最小生成树有异曲同工之妙;AC代码:#include<bits/stdc++.h>using namespace std;int dis[101];bool flag[101];int w[110][110];//数组开小了,再加上后面初始化时多处理了一部分,所以wa了好多次;int main(){ int n,m; whil...原创 2018-05-19 01:10:27 · 198 阅读 · 0 评论 -
Problem I 成都路口(最短路SPFA算法队列+vector实现)
emm......还是一个蓝白点的思想,也是看了别人的题解才知道用vecor数组来表示某点所连接的所有点,vector用的确实好。#include<bits/stdc++.h>using namespace std;int w[109][109];int dis[109];vector <int> a[109];bool vis[109];int spfa(in...原创 2018-05-19 09:13:48 · 189 阅读 · 0 评论 -
HDU 2066 一个人的旅行(spfa队列实现,坑:两点间可能有多条路)
Problem Description虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,...原创 2018-05-19 11:06:56 · 179 阅读 · 0 评论 -
HDU 1596 find the safest road(最短路,最大权值积,Dijkstra)
Problem DescriptionXX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条从u 到 v 的通道P 的安全度为Safe(P) = s(e1)*s(e2)…*s(ek) e1,e2,ek是P 上的边 ,现在8600 想出去旅游,面对这这么多的路,他想找一条最安全的路。但是8600...原创 2018-05-21 22:24:09 · 138 阅读 · 0 评论 -
HDU 3339 In Action (01背包+最短路)
Problem DescriptionSince 1945, when the first nuclear bomb was exploded by the Manhattan Project team in the US, the number of nuclear weapons have soared across the globe.Nowadays,the crazy boy in FZ...原创 2018-05-26 00:04:32 · 307 阅读 · 0 评论 -
HDU 1690 Bus System(long long类型,w数组初始化要很大,Floyed最短路)
Bus SystemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9769 Accepted Submission(s): 2663Problem DescriptionBecause of the huge population ...原创 2018-05-26 00:22:47 · 251 阅读 · 0 评论 -
POJ 3255 Roadblocks(次短路模板题)
RoadblocksTime Limit: 2000MS Memory Limit: 65536K Total Submissions: 18939 Accepted: 6641 DescriptionBessie has moved to a small farm and sometimes enjoys returning to visit on...原创 2018-07-21 23:34:34 · 173 阅读 · 0 评论 -
12.3日+佛洛依德处理无向图最小环+dijkstra处理有向图最小环
昨天的数据库考试,题目本身都简单的,但是感觉时间有点紧张,可能和自己有点墨迹有关。题目不怕不会做,就怕读错题,上了大学养成了考试“做完一遍要检查的坏习惯”,这次没时间检查,所以有种做的不好的感觉。 弗洛伊德算法是运用的动态规划的思想。常用于求图中任意两点间的最短路,同时也能表示任一两点之间是否有可达关系。 用该算法的思想还可以求无向图中的“最小”环。例如poj1743...原创 2018-12-03 10:04:31 · 497 阅读 · 0 评论 -
CH6202 黑暗城堡(最短路径生成树+二叉堆优化的dijkstra求最短路模板)
6202 黑暗城堡0x60「图论」例题描述: 在顺利攻破Lord lsp的防线之后,lqr一行人来到了Lord lsp的城堡下方。Lord lsp黑化之后虽然拥有了强大的超能力,能够用意念力制造建筑物,但是智商水平却没怎么增加。现在lqr已经搞清楚黑暗城堡有N个房间 (1≤N≤1000),M条可以制造的双向通道,以及每条通道的长度。 lqr深知Lo...原创 2018-12-08 17:19:58 · 497 阅读 · 2 评论 -
12.16+树上倍增法求LCA
树上倍增求LCA的步骤:1.预处理:节点的深度d、到根节点的距离dist、该点向上走2^k步能够到达的点:f数组。2.lca:①.将两个节点调整到同一个深度,只调整深的那个即可。②.如果①结束后,这两个点重合,说明该点就是所求的点。③.否则,从大往小开始试跳跃的步数,直至将这两个点调整为目标点的两个子节点。最后两点的父节点就是所求的LCA。例题:H...原创 2018-12-16 20:45:29 · 210 阅读 · 0 评论 -
POJ 1201 Intervals(差分约束系统,最长路正环判断)
题目描述: IntervalsTime Limit:2000MS Memory Limit:65536K Total Submissions:32163 Accepted:12444 DescriptionYou are given n ...原创 2018-12-23 09:22:48 · 251 阅读 · 0 评论 -
Codeforces Round #234 (Div. 2) D. Dima and Bacteria(并查集划块缩点floyed最短路)
题意: 有k种细菌,每种细菌c[i](i:1~k)个,总共n个,n个点之间有m条边,第一个问题,相同种类的细菌之间能不能有一条花费为零的路。第二个问题,在所有种类细菌均满足第一问条件的情况下,各个种类细菌之间的最短路。思路: 相邻两点之间花费为零,必然连接他们的边权为零。所以很容易想到把所有边权为零的边保留,然后看同种细菌是不是在一个联通块中即可。...原创 2019-01-28 01:11:53 · 146 阅读 · 0 评论 -
Codeforces 544D Destroying Roads
链接:http://codeforces.com/problemset/problem/543/B B. Destroying Roadstime limit per test:2 secondsIn some country there are exactlyncities andmbidirectional roadsconnec...原创 2019-01-17 09:45:04 · 307 阅读 · 0 评论 -
2019ACM山东省赛L题 Median/ZOJ 4124(传递闭包)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124题目描述:MedianTime Limit:1 Second Memory Limit:65536 KBRecall the definition of the median ofelements whe...原创 2019-05-14 00:21:09 · 427 阅读 · 0 评论 -
11.29日总结+最短路算法总结
昨天的训练赛,就是上周六的cf,前三题没啥好说的,C题难点,难点主要在于怎么判断以及求出两个矩形的相交部分,当做一个小知识点记住吧。 这几天看了几道最短路的题目:首先总结一下知识点: 最短路的问题可以分为单源最短路问题 和 任意两点间的最短路径问题。一、单源最短路问题:1.dijkstra算法:①算法思想: 是从起点开始,每次从还没...原创 2018-11-29 19:37:20 · 200 阅读 · 1 评论 -
Problem I 成都路口(最短路Floyed算法模板)
Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?<br><br> Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示...原创 2018-05-18 20:27:26 · 216 阅读 · 0 评论