
连通图
Qingo呀
老菜鸡。
展开
-
2019 ICPC 银川 H. Delivery Route (强连通分量+拓扑+分块最短路)
题链:https://nanti.jisuanke.com/t/42388题意:一个有向图,有双向边(边权全为正),单向边(边权可能为负),求一个起点到其他点的最短路。思路:有负权边且卡spfa。注意题目中有一个非常重要的条件。也就是环中不可能有负权边。那么,我们考虑tarjan缩点,那么在一个强连通分量中的点之间的边都是正权边,那么内部的最短路就能用Dijkstra了。缩点后,图变成一个树,强连通分量之间的最短路就能用Topo排序求了。注意,分块是指一个强连通分量(一个缩点),一个原创 2020-12-09 12:12:43 · 378 阅读 · 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 评论 -
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 评论 -
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 评论 -
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 评论 -
POJ - 3177 Redundant Paths (重边+边双连通分量)
链接:https://cn.vjudge.net/problem/POJ-3177题意:给出一个无向连通图,问至少加多少边使图变成一个边双连通分量。思路:先求出边双连通分量,缩点建图(树)后,这里有一个结论,答案就是(树的叶子节点的个数+1)/2。为什么呢?缩点后图就变为了一棵树,树的边都是桥,怎么使树变成一个边双呢?每次找一对LCA深度最小的点,加边,画画图就清楚了。+1是因为如果不能恰...原创 2019-08-14 21:41:03 · 263 阅读 · 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 评论 -
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 - 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 评论 -
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 评论 -
洛谷P3225 [HNOI2012]矿场搭建(割点+点双连通分量+组合数学)(点双的两种求法模板)
链接:https://www.luogu.org/problem/P3225题意:多组样例,有若干个挖煤点,由n条隧道相连。现在要在某些挖煤点修救援出口,使得某个挖煤点倒塌后,其它挖煤点的人可以从救援出口出去。要求的是最少的救援出口数和在保证最少救援出口数的条件下,不同的方案数。(注意,挖煤点的最大编号就是挖煤点的数量,千万不要理解成有n个挖煤点。)思路:很显然这个题和割点密切相关。先介绍...原创 2019-08-18 13:55:36 · 218 阅读 · 2 评论 -
POJ-2942 Knights of the Round Table(补图+点双连通分量+奇圈+染色判断二分图+结论)
链接:http://poj.org/problem?id=2942题意:多组样例。亚瑟王要召唤骑士在圆桌会议。n个骑士,m个憎恨关系,一个骑士不能和他憎恨的骑士坐在一块。亚瑟王要求来开会的骑士的个数必须是奇数,在此条件下,求开除最少的骑士。(注意一个骑士不能开会,至少三个骑士才能开会。)思路:我们建补图,这样有边的人都能做一块,然后再求点双,求出点双后,再判断能不能形成奇圈。这里有现成的结...原创 2019-08-18 14:33:41 · 223 阅读 · 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 评论 -
洛谷 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 评论