图的连通性问题的小结 (双连通、2-SAT)
图的连通性问题包括:
1、强连通分量。
2、最小点基和最小权点基。
3、双连通。
4、全局最小割。
5、2-SAT
一、强连通分量
强连通分量很少单独出题,一般都是把求强连通分量作为缩点工具。
有三种算法:
1、Kosaraju算法。对原图和反图分别进行一次深度优先搜索。
2、Tarjan算法。用了时间戳。
3、Garbow算法。与Tarjan算法是同一思想,但更精妙。
三种算法的模版我已经贴过了 http://www.cnblogs.com/Potato-lover/p/3956604.html
二、最小点基和最小权点基
这个我单独做了总结 http://www.cnblogs.com/Potato-lover/category/606571.html
三、双连通
这个也单独做了总结 http://www.cnblogs.com/Potato-lover/p/4001179.html
四、全局最小割
学了网络流都知道,最小割问题等价于最大流问题。但是最大流的时间复杂度是O(n*n*n*m), 有时候出题者就要卡时间,最大流算法会超时。
Stoer-Wanger算法:
算法的思想是:对于图中的任意两个顶点u和v,如果它们属于同一个集合,那么将顶点u和顶点v合并以后并不影响图的最小割。
时间复杂度为O(n*n*n) 。
题目:
Hdu 3691 Nubulsa Expo 类似与hdu2914
建图以后直接上模版(主要是要知道有这个算法)
模版中顶点标号是从0开始的,存图的时候从0开始不用修改模版。题中有重边,重边的处理是把所有的边权值加起来作为一条边。所以矩阵初始化为0。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=, INF=0x3f3f3f3f;
int Map[N][N],Node[N],dis[N];
bool vis[N];
int ans;
void SW(int n)
{
int maxj,pre,m,i,j;
ans=INF;
for(i=;i<n;i++) Node[i]=i;
while(n>)
{
m=-; maxj=;
for(i=;i<n;i++)
{
dis[Node[i]]=Map[Node[]][Node[i]];
vis[Node[i]]=;
if(dis[Node[i]]>m) {m=dis[Node[i]];maxj=i;}
}
pre=;
vis[Node[]]=;
for(j=;j<n;j++)
{
vis[Node[maxj]]=;
if(j==n-)
{
ans=min(ans,m);
for(i=;i<n;i++)
{
Map[Node[pre]][Node[i]]+= Map[Node[maxj]][Node[i]];
Map[Node[i]][Node[pre]]+= Map[Node[maxj]][Node[i]];
}
Node[maxj]=Node[--n];
}
else
{
pre=maxj; m=-;
for(i=;i<n;i++)
{
if(!vis[Node[i]])
{
dis[Node[i]] += Map[Node[pre]][Node[i]];
if(dis[Node[i]]>m) {m=dis[Node[i]]; maxj=i;}
}
}
}
}
}
}
int main()
{
freopen("test.txt","r",stdin);
int n,m,s,i,j,k;
while(scanf("%d%d%d",&n,&m,&s)!=EOF&&n)
{
memset(Map,,sizeof(Map));
while(m--)
{
scanf("%d%d%d",&i,&j,&k);
i--;j--;
Map[i][j]+=k; Map[j][i]+=k;
}
SW(n);
printf("%d\n",ans);
}
return ;
}
五、2-SAT
以前做出总结 http://www.cnblogs.com/Potato-lover/p/3965512.html
PS:参考资料主要来自《图论及应用》,哈尔冰工业大学出版。
图的连通性问题的小结 (双连通、2-SAT)的更多相关文章
- 图的强连通&双连通
http://www.cnblogs.com/wenruo/p/4989425.html 强连通 强连通是指一个有向图中任意两点v1.v2间存在v1到v2的路径及v2到v1的路径. dfs遍历一个图, ...
- poj 3352 Road Construction【边双连通求最少加多少条边使图双连通&&缩点】
Road Construction Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10141 Accepted: 503 ...
- 图的割点 桥 双连通(byvoid)
[点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...
- Tarjan-割点&桥&双连通
$Tarjan$求割点 感觉图论是个好神奇的东西啊,有各种奇奇怪怪的算法,而且非常巧妙. 周末之前说好回来之后进行一下学术交流,于是wzx就教了$Tarjan$,在这里我一定要说: wzx AK ...
- HohoCoder 1184 : 连通性二·边的双连通分量(+原理证明)
1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老师 ...
- 图论之tarjan真乃神人也,强连通分量,割点,桥,双连通他都会
先来%一下Robert Tarjan前辈 %%%%%%%%%%%%%%%%%% 然后是热情感谢下列并不止这些大佬的博客: 图连通性(一):Tarjan算法求解有向图强连通分量 图连通性(二):Tarj ...
- Tarjan算法——强连通、双连通、割点、桥
Tarjan算法 概念区分 有向图 强连通:在有向图\(G\)中,如果两个顶点\(u, v\ (u \neq v)\)间有一条从\(u\)到\(v\)的有向路径,同时还有一条从\(v\)到\(u\)的 ...
- hihoCoder 1184 连通性二·边的双连通分量
#1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老 ...
- 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1
import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...
随机推荐
- Jquery常见操作多选框/复选框/checkbox
1.判断checkbox是否为选中状态: if($("#searchNews").attr("checked")=="checked") { ...
- Wireshark 如何捕获网络流量数据包
转自:http://www.4hou.com/web/7465.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutia ...
- BZOJ 3744 Gty的妹子序列 (分块+树状数组+主席树)
题面传送门 题目大意:给你一个序列,多次询问,每次取出一段连续的子序列$[l,r]$,询问这段子序列的逆序对个数,强制在线 很熟悉的分块套路啊,和很多可持久化01Trie的题目类似,用分块预处理出贡献 ...
- 爬虫系列(十一) 用requests和xpath爬取豆瓣电影评论
这篇文章,我们继续利用 requests 和 xpath 爬取豆瓣电影的短评,下面还是先贴上效果图: 1.网页分析 (1)翻页 我们还是使用 Chrome 浏览器打开豆瓣电影中某一部电影的评论进行分析 ...
- python orm框架-----SQLALchemy-查询篇
似乎ORM最难设计的部分是查询.特别是面向对象的查询,今天学习SQLAlchemy,发现SQLAlchemy的查询语法竟如此灵活,惊叹其如此强大的表达能力的同时也对Python也有了更深的认识.下面看 ...
- MySQL用Load Data local infile 导入部分数据后中文乱码
今天在两台MySQL服务器之间导数据,因为另一个MySQL服务器是测试用的,差一个月的数据,从现有MySQL服务器select到一个文件,具体语句是: select * from news where ...
- 转载 - KMP算法祥解
出处:http://www.cppblog.com/oosky/archive/2006/07/06/9486.html KMP字符串模式匹配详解 来自CSDN A_B_C_ABC 网友 KM ...
- mongodb--find高级用法
链式查询 db.person.find().limit(4).sort({sex:-1}) // sort来说,1 是升序, -1 是降序 尽量不要用mongodb去做一些复杂的运算 分页的写法 ·· ...
- 洛谷——P1616 疯狂的采药
https://www.luogu.org/problem/show?pid=1616#sub 题目背景 此题为NOIP2005普及组第三题的疯狂版. 题目描述 LiYuxiang是个天资聪颖的孩子, ...
- ZOJ 3209
精确覆盖 #include <iostream> #include <cstdio> #include <cstring> #include <algorit ...