
=====图论=====
文章平均质量分 61
Qingo呀
老菜鸡。
展开
-
2019 ICPC 南京 J. Spy (离散化+前缀和+组合数学+二分图最大权匹配【KM BFS实现】)
题链:https://nanti.jisuanke.com/t/42404题意:给你一个n,再给出含有n个数的数组a,p,b,c。现在,你可以随意的将数组b和c中的数两两配对求和(总共有n!种配法),假设配对后的数组为d。然后再把a和d中的数两两配对比较。如果d[j]>a[i],那么可以获得p[i]单位的荣誉值,要求两两配对比较获得的荣誉值的和尽可能的大。求所能获得的荣誉值的期望乘以n,题目保证乘以n后答案为整数。思路:我们考虑一个配对比较(d[j],a[i]),如果d[j]>a[i],原创 2020-12-11 21:48:13 · 439 阅读 · 0 评论 -
2019 ICPC 银川 H. Delivery Route (强连通分量+拓扑+分块最短路)
题链:https://nanti.jisuanke.com/t/42388题意:一个有向图,有双向边(边权全为正),单向边(边权可能为负),求一个起点到其他点的最短路。思路:有负权边且卡spfa。注意题目中有一个非常重要的条件。也就是环中不可能有负权边。那么,我们考虑tarjan缩点,那么在一个强连通分量中的点之间的边都是正权边,那么内部的最短路就能用Dijkstra了。缩点后,图变成一个树,强连通分量之间的最短路就能用Topo排序求了。注意,分块是指一个强连通分量(一个缩点),一个原创 2020-12-09 12:12:43 · 378 阅读 · 0 评论 -
洛谷 P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查 (网络流+最小割)
题目链接:https://www.luogu.com.cn/problem/P2057思路:最小割模型,https://blog.youkuaiyun.com/birdmanqin/article/details/110082417简单版。代码:#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 310;const int M = 2e5+10;const int inf = 0.原创 2020-11-24 15:39:18 · 154 阅读 · 0 评论 -
QDU校内排位赛第三场 L 于公移山(网络流+最小割)
题目链接:https://pintia.cn/problem-sets/1330210570443206656/problems/1330211663055204353题意:思路:每个点要么是平原要么是高原,也就是把若干点分为两个集合,某些点之间还有冲突,典型的最小割模型。假设一个点为u,如果其是平原,将其与源点相连,流量为b(如果将s->u割去,要花费b,也就是将其变为高原的花费);如果其是高原,将其与汇点相连,流量为b(如果将u->t割去,要花费b,也就是将其变为平原的花费)原创 2020-11-24 15:36:38 · 169 阅读 · 0 评论 -
CodeForces - 609E Minimum spanning tree for each edge (MST+LCA[树上倍增实现])(次小生成树思想)
题目链接:https://codeforces.com/problemset/problem/609/E题意:n个点m条边,对于每条边,求包含这条边的MST的权重。思路:首先求出一个MST,假设其权重为sum。对于每条边,如果其在MST上,那么答案就是sum;否则,我们在求得的MST加上这条边(假设权重为w1),那么树出现了环。我们要在树上u->v的路径中删除权值最大的一条边(假设为w2),那么答案就是sum-w1+w2。求次小生成树也是这种思想。#include <bits/st原创 2020-11-16 22:05:09 · 265 阅读 · 1 评论 -
POJ - 3683 Priest John's Busiest Day(2-SAT模板)
链接:http://poj.org/problem?id=3683题意:有n个婚礼需要主持。每个婚礼有两个时间段可以主持,求一个时间不冲突的主持n个婚礼的时间安排方案。思路:显然是个2-SAT题,若将每个婚礼的两个时间段视为一个集合的两个元素,问题转化为从n个集合里选n个元素,并且某些元素有互斥关系。很明显的2-SAT问题。先按选谁必须选谁的方式构图,然后tarjan缩点。缩完点后,如果有...原创 2019-08-10 21:19:16 · 145 阅读 · 0 评论 -
洛谷 P3388 【模板】割点(割顶)(tarjan割点模板)
洛谷 P3388 【模板】割点(割顶)(tarjan割点模板)题目背景割点题目描述给出一个n个点,m条边的无向图,求图的割点。输入输出格式输入格式:第一行输入n,m下面m行每行输入x,y表示x到y有一条边输出格式:第一行输出割点个数第二行按照节点编号从小到大输出节点,用空格隔开输入输出样例输入样例#1:6 71 21 31 42 53...原创 2019-03-18 20:30:00 · 371 阅读 · 0 评论 -
HDU - 4635 Strongly connected (强连通分量+思维)
链接:https://cn.vjudge.net/problem/HDU-4635题意:给你一个有向简单图,问最多加多少边,加完之后该图仍不是强连通分量。如果已经是则输出-1。思路:肯定是加到再加一条边就变成强连通分量为止。现在考虑怎么使加的边尽可能的多,也就是加完边后,边的总数尽可能的大。那么,最终的图肯定是在两个完全图之间,再加一些边组成。假设现在两个完全图的点数分别为x,y。可以得到...原创 2019-08-16 10:51:31 · 250 阅读 · 0 评论 -
POJ - 1904 King's Quest (强连通分量+完美匹配)
链接:https://cn.vjudge.net/problem/POJ-1904题意:有n个王子和n个女孩,每个王子都有若干个喜欢的女孩,王子需要娶喜欢的女孩,一个王子只能娶一个女孩。现在给出一个初始的完美匹配,也就是n个王子娶n个女孩的一种方案。输出对于每个王子,他可以娶的女孩的编号的集合。王子娶这个集合的任一个女孩,其它王子都能娶到自己喜欢的女孩。思路:题目给出了一个完美匹配,我们建...原创 2019-08-16 11:15:35 · 242 阅读 · 0 评论 -
HDU-6714 最短路 2 (最短路Dijstra+Floyd理解)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6714题意:就是求任意两点最短路中松弛点中最小值的和。思路:Floyd第一层循环其实就是枚举的松弛点。枚举起点,每次跑一遍Dijstra,求所有松弛点的最小值即可。#include <bits/stdc++.h>#define ll long longusing namespa...原创 2019-08-25 21:56:26 · 269 阅读 · 0 评论 -
HDU - 4612 Warm up (边双联通分量+树形dp/树的直径)
链接:https://cn.vjudge.net/problem/HDU-4612题意:n个点m条双向边,形成一个连通图,求加一条边后最少的桥的数目。思路:tarjan边双缩点建图后,变为一棵树,显然,加在所有点的子树中距离最远的两个点(这不就是树的直径吗?我用树形dp求得。。)上。G++不是WA就是TLE,换成C++就过了。//#include <bits/stdc++.h&...原创 2019-08-14 21:54:19 · 230 阅读 · 0 评论 -
POJ - 3177 Redundant Paths (重边+边双连通分量)
链接:https://cn.vjudge.net/problem/POJ-3177题意:给出一个无向连通图,问至少加多少边使图变成一个边双连通分量。思路:先求出边双连通分量,缩点建图(树)后,这里有一个结论,答案就是(树的叶子节点的个数+1)/2。为什么呢?缩点后图就变为了一棵树,树的边都是桥,怎么使树变成一个边双呢?每次找一对LCA深度最小的点,加边,画画图就清楚了。+1是因为如果不能恰...原创 2019-08-14 21:41:03 · 263 阅读 · 0 评论 -
CodeChef - GRAPHCNT: Counting on a directed graph(支配树+有向有环图)
链接:https://cn.vjudge.net/problem/CodeChef-GRAPHCNT题意:https://vj.ti12z.cn/0cc7d90757eeb9d4ff079c038b774572?v=1564750265 思路:还是把有向有环图的学了,完全懂是不可能完全懂的,但怎么着也是自己敲了一遍代码。加了些自己的理解,存个模板吧。题目要求的也就是必经点只为1的点对,也...原创 2019-08-07 21:31:25 · 246 阅读 · 0 评论 -
2-SAT学习
慢慢填坑。。。。。。。。。。。学习博客(写的也忒好了。。。):https://blog.youkuaiyun.com/jarjingx/article/details/85216902-SAT题步骤:1.建图:根据选谁必须选谁的方式建图2.tarjan:求强连通分量缩点染色3.直接根据染色值判断并确定方案...原创 2019-08-09 21:36:27 · 231 阅读 · 0 评论 -
HDU-1814 Peaceful Commission (2-SAT暴力模板 暴力染色+字典序最小)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1814题意:多组样例。2n个人。每两个为一个党派的人,m个互斥关系。每个党派选一个人,总共n个人。有解的话输出字典序最小的。思路:赤果果的2-SAT题。先说说2-SAT吧,目前理解就是。有n个集合,每个集合有两个元素,每个集合必须选一个元素,并且不同集合的元素还有互斥关系,2-SAT就可以判断是否有...原创 2019-08-09 21:34:34 · 301 阅读 · 0 评论 -
POJ - 3694 Network(无向图+多重边+动态加边+边双连通分量+并查集+LCA)
链接:https://cn.vjudge.net/problem/POJ-3694题意:每加一次边输出当前桥的个数。思路:先将原图边双连通分量求出(顺便求出桥(割边)的个数),并且将边双联通分量缩点。缩点之后重新建图,肯定是树或森林,当加一点边时,如果这条边的两个点(假设为u、v)已经在同一个边双里,桥的个数不会变;否则,u、v和LCA(u,v)之间的所有点,都会在同一个边双里,减少的桥就...原创 2019-08-14 10:29:37 · 454 阅读 · 0 评论 -
UVA - 796 Critical Links (无向图桥模板+两种实现)
链接:https://cn.vjudge.net/problem/UVA-796题意:求无向图桥的个数以及按字典序输出桥。思路:只需判断u的孩子节点的lowv>u。#include <bits/stdc++.h>#include <unordered_map> #define ll long longusing namespace std;con...原创 2019-08-14 10:01:39 · 151 阅读 · 0 评论 -
UVA - 315 Network (割点模板+stringstream)
链接:https://cn.vjudge.net/problem/UVA-315题意:求无向图割点的个数。思路:tarjan算法。搜索的时候,假设当前搜索到的节点为u,检验一下其孩子节点v的lowv,如果lowv>=dfnu,那么u有可能是一个点。如果u是根节点,那么其孩子数目大于等于2,他才是一个割点。#include <bits/stdc++.h>#defin...原创 2019-08-14 09:56:22 · 132 阅读 · 0 评论 -
HDU - 4685 Prince and Princess (构造完美匹配+强连通分量)
链接:https://cn.vjudge.net/problem/HDU-4685题意:T组样例。有n个王子和n个公主,每个王子都有若干个喜欢的公主,王子需要娶喜欢的公主,一个王子只能娶一个公主。输出对于每个王子,他可以娶的公主的编号的集合。王子娶这个集合的任一个公主,其他王子与公主的最大匹配数不变。思路:这道题和poj1904https://blog.youkuaiyun.com/birdmanqi...原创 2019-08-16 11:56:03 · 276 阅读 · 0 评论 -
POJ-3207 Ikki's Story IV - Panda's Trick(2-SAT)
链接:http://poj.org/problem?id=3207题意:n个点,围成一个圆编号从0到n-1。现在要给m对点连线,可以在圆内部连也可以在圆外部连。问有无可能使这m条线不交叉(有一个共同端点不算交叉。)思路:很明显的2-SAT题,两个点要么在内部连,要么在外部连,等同于集合中的两个元素,两条线交叉代表有互斥关系。直接跑2-SAT,判断一个集合的两个元素是否在同一强连通分量即可。...原创 2019-08-12 20:55:06 · 147 阅读 · 0 评论 -
HDU - 4738 Caocao's Bridges (边双连通分量+桥)(求桥的两种方法)
链接:https://cn.vjudge.net/problem/HDU-4738题意:多组样例。n个点,m条双向边,每条边都有w个人守,炸掉该边时,需要w个人。求派最少的人数,使图不连通。思路:刚看完题,就想这不就是简单的求个所有桥(割边)的最小权重嘛?开写开写,写完WA了。想了想图可能不连通,这时应该输出0,我竟然sb的认为应该输出-1。但我更sb的是,一时没想到怎么判断图不连通,想到...原创 2019-08-16 21:31:32 · 225 阅读 · 0 评论 -
欧拉回路/路径学习(求欧拉回路/路径模板)
参考博客:https://www.cnblogs.com/LMCC1108/p/11306297.html 本校潘武灵/杰巨https://blog.youkuaiyun.com/PacosonSWJTU/article/details/50007847 求回路/路径详解欧拉回路如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。如果一个回路...原创 2019-09-14 10:05:18 · 810 阅读 · 1 评论 -
哈密顿回路/路径学习
参考博客:https://blog.youkuaiyun.com/zhouzi2018/article/details/81278942哈密顿图哈密顿图(哈密尔顿图)(英语:Hamiltonian graph,或Traceable graph)是一个无向图,由天文学家哈密顿提出,由指定的起点前往指定的终点,途中经过所有其他节点且只经过一次。在图论中是指含有哈密顿回路的图,闭合的哈密顿路径称作哈密顿回...原创 2019-09-10 21:02:44 · 3595 阅读 · 0 评论 -
2018宁夏邀请赛 Clever King(最大点权闭合子图学习+模板)
参考博客:https://www.cnblogs.com/dilthey/p/7565206.html题意:T组样例。n种产品,m个矿场。制造每种产品都需要一些其他产品和矿石。制造一种产品会获得val的收益,开采一个矿场需要花费cost,矿场一旦开采就能获得无穷多的矿石。问净收益的最大值。结论:1、最大点权闭合子图的值等于正点权和-最小割。2、最大点权闭合子图中的节点的后继节点都在...原创 2019-09-06 21:56:25 · 249 阅读 · 0 评论 -
HDU - 3605 Escape(二分图多重匹配)
2012 If this is the end of the world how to do? I do not know how. But now scientists have found that some stars, who can live, but some people do not fit to live some of the planet. Now scientists wa...原创 2019-08-20 11:02:03 · 160 阅读 · 0 评论 -
一般图最大匹配(带花树算法)(学习+模板)
参考博客:https://blog.youkuaiyun.com/xuezhongfenfei/article/details/10148445https://www.cnblogs.com/zhoushuyu/p/8717234.htmlhttps://www.cnblogs.com/owenyu/p/6858508.html经典例题:https://www.cnblogs.com/BA...原创 2019-08-30 16:47:28 · 2755 阅读 · 0 评论 -
HDU - 3126 Nova(二分+最大流+计算几何)
链接:https://cn.vjudge.net/problem/HDU-3126题意:多组样例,n个巫师,m个敌人,k颗树。巫师有攻击距离和冷却时间,树有半径。若敌人在巫师的攻击范围外,或者巫师和敌人之间被树挡着,都不可攻击。问巫师消灭所有敌人的最少时间。思路:首先,巫师消灭敌人的个数和时间是成正比的,也就是说是单调的。这满足二分的要求,考虑二分枚举时间T,那么巫师(i)可以消灭敌人的个...原创 2019-08-28 22:27:36 · 184 阅读 · 0 评论 -
CodeForces - 546E Soldier and Traveling(最大流+拆点+建图+输出流量流向)
链接:https://cn.vjudge.net/problem/CodeForces-546E题意:n个城市,每个城市初始时有a[i]个士兵。城市间有m条无向边,某个城市的士兵可以留在原城市到或到与该城市仅仅相邻的城市(即只隔一条路的士兵)。现在要求最终某个城市必须正好有b[i]个士兵,可能的话输出n*n的矩阵,表示有mat[i][j]个士兵从城市i到城市j。思路:因为城市有初始数量和目...原创 2019-08-28 22:10:40 · 197 阅读 · 0 评论 -
POJ - 3436 ACM Computer Factory(最大流+拆点+输出流量路径)
链接:https://cn.vjudge.net/problem/POJ-3436题意:N个制作电脑的工厂,一个完整的电脑有P个部件。每个工厂每小时都可以把若干个半成品电脑变成若干半成品或成品电脑。也就是给他若干个有某些零件的半成品电脑(有些必须有,有些必须没有,有些可有可无),这个工厂会制作出若干个有某些零件的电脑。问这N个工厂一小时能生产多少完整的电脑,并且输出工厂之间的联系。(形如u、v...原创 2019-08-28 21:37:00 · 194 阅读 · 0 评论 -
HDU - 5452 Minimum Cut (树上差分)
Given a simple unweighted graph G (an undirected graph containing no loops nor multiple edges) with n nodes and m edges. Let T be a spanning tree of G.We say that a cut in G respects T if it cuts jus...原创 2019-07-04 14:24:21 · 165 阅读 · 0 评论 -
POJ-2942 Knights of the Round Table(补图+点双连通分量+奇圈+染色判断二分图+结论)
链接:http://poj.org/problem?id=2942题意:多组样例。亚瑟王要召唤骑士在圆桌会议。n个骑士,m个憎恨关系,一个骑士不能和他憎恨的骑士坐在一块。亚瑟王要求来开会的骑士的个数必须是奇数,在此条件下,求开除最少的骑士。(注意一个骑士不能开会,至少三个骑士才能开会。)思路:我们建补图,这样有边的人都能做一块,然后再求点双,求出点双后,再判断能不能形成奇圈。这里有现成的结...原创 2019-08-18 14:33:41 · 222 阅读 · 0 评论 -
洛谷P3225 [HNOI2012]矿场搭建(割点+点双连通分量+组合数学)(点双的两种求法模板)
链接:https://www.luogu.org/problem/P3225题意:多组样例,有若干个挖煤点,由n条隧道相连。现在要在某些挖煤点修救援出口,使得某个挖煤点倒塌后,其它挖煤点的人可以从救援出口出去。要求的是最少的救援出口数和在保证最少救援出口数的条件下,不同的方案数。(注意,挖煤点的最大编号就是挖煤点的数量,千万不要理解成有n个挖煤点。)思路:很显然这个题和割点密切相关。先介绍...原创 2019-08-18 13:55:36 · 218 阅读 · 2 评论 -
POJ - 1556 The Doors(判断线段与线段相交模板+最短路)
链接:https://cn.vjudge.net/problem/POJ-1556题意:在一个10*10矩形内,有一些竖着的墙,问从(0,5)到(10,5)的最短距离。思路:由于墙的个数很少,把不是墙的线段存下来,再把不是墙的线段两端的点存下来。判断线段相交建图,跑最短路。#include <cstdio>#include <iostream>#inclu...原创 2019-08-22 21:34:07 · 140 阅读 · 0 评论 -
POJ - 1236 Network of Schools(连通图+无向图强连通分量缩点)
链接:https://cn.vjudge.net/problem/POJ-1236题意:n个点,每个点都指向一些点,编号从0开始,问有多少入度为0的点,并且需要加多少边才能使得n个点两两互达。思路:第一个答案就是缩点后入度为0的点的个数,第二个答案为入度为0的点的个数和出度为0的点的个数取最大值。(要想两两互达,那么肯定没有入度为0和出度为0的点,那么就将出度为0的点指向入度为0的点即可。...原创 2019-08-14 09:45:26 · 163 阅读 · 0 评论 -
图论-连通图学习总结
一、有向图有向图的问题就是直接Tarjan求强连通分量,然后搞就行。二、无向图1、割点和桥无向图的割点和桥的求法和有向图的差不多,唯一多的限制就是不能从该点往他的父亲走,当然可能会有重边。但有统一的解决方法,那就是标记走过的边,既然是无向图,那么加边的时候肯定加两条边(这俩边的编号关系就是相互^1),那么就走一条边时,把另一条边标记即可。 if(g[i].u...原创 2019-08-18 21:51:44 · 1508 阅读 · 0 评论 -
BZOJ3331: [BeiJing2013]压力(点双连通分量+缩点+LCA+树上差分)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3331题意:n个点,m条无向边,给出q个点对,问这n个点分别是多少点对的必经点。(两点本身也算也算。)思路:显然,如果两点在同一个点双中,那么他俩的必经点也就是他俩本身。否则,这两点的必经点也就是连接他俩点双的割点。我们将点双缩成一个点,割点视为一个点(一个割点可能属于若干个点双),然...原创 2019-08-18 21:06:27 · 519 阅读 · 0 评论 -
洛谷2740草地排水Drainage Ditches(最大流_网络流学习)
题目背景在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水。这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间。因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没的烦恼(不用担心,雨水会流向附近的一条小溪)。作为一名一流的技师,农夫约翰已经在每条排水沟的一端安上了控制器,这样他可以控制流入排水沟的水流量。题目描述农夫约翰知道每一条排水沟每分钟可以流过...原创 2019-05-28 21:59:34 · 223 阅读 · 0 评论 -
HDU - 1054 Strategic Game(最小顶点覆盖)(二分图匹配)(图论学习)
Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solution fast enough and then he is very sad. Now he has the following problem. He must defend a medieva...原创 2019-05-13 16:52:12 · 252 阅读 · 0 评论 -
UOJ#80. 二分图最大权匹配(BFS)
从前一个和谐的班级,有 nl 个是男生,有 nr 个是女生。编号分别为 1,…,nl 和 1,…,nr。有若干个这样的条件:第 v 个男生和第 u 个女生愿意结为配偶,且结为配偶后幸福程度为 ww。请问这个班级里幸福程度之和最大是多少?输入格式第一行三个正整数,nl,nr,m。接下来 mm 行,每行三个整数 v,u,w 表示第 v 个男生和第 u 个女生愿意结为配偶,且幸福程度...原创 2019-05-16 21:09:29 · 601 阅读 · 0 评论 -
HDU - 2255 奔小康赚大钱 (二分图最大权值匹配模板)(KM算法)
传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只能得到一间房子。另一方面,村长和另外的村领导希望得到最大的效益,这样村里的机构才会有钱.由于老百姓都比较富裕,他们都能对每一间房子在他们的经济...原创 2019-05-15 21:28:19 · 171 阅读 · 0 评论