图的连通性问题包括:

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)的更多相关文章

  1. 图的强连通&双连通

    http://www.cnblogs.com/wenruo/p/4989425.html 强连通 强连通是指一个有向图中任意两点v1.v2间存在v1到v2的路径及v2到v1的路径. dfs遍历一个图, ...

  2. poj 3352 Road Construction【边双连通求最少加多少条边使图双连通&&缩点】

    Road Construction Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10141   Accepted: 503 ...

  3. 图的割点 桥 双连通(byvoid)

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  4. Tarjan-割点&桥&双连通

    $Tarjan$求割点 感觉图论是个好神奇的东西啊,有各种奇奇怪怪的算法,而且非常巧妙. 周末之前说好回来之后进行一下学术交流,于是wzx就教了$Tarjan$,在这里我一定要说: wzx  AK   ...

  5. HohoCoder 1184 : 连通性二·边的双连通分量(+原理证明)

    1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老师 ...

  6. 图论之tarjan真乃神人也,强连通分量,割点,桥,双连通他都会

    先来%一下Robert Tarjan前辈 %%%%%%%%%%%%%%%%%% 然后是热情感谢下列并不止这些大佬的博客: 图连通性(一):Tarjan算法求解有向图强连通分量 图连通性(二):Tarj ...

  7. Tarjan算法——强连通、双连通、割点、桥

    Tarjan算法 概念区分 有向图 强连通:在有向图\(G\)中,如果两个顶点\(u, v\ (u \neq v)\)间有一条从\(u\)到\(v\)的有向路径,同时还有一条从\(v\)到\(u\)的 ...

  8. hihoCoder 1184 连通性二·边的双连通分量

    #1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老 ...

  9. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1

    import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...

随机推荐

  1. Python 切片 day3

    你可以处理列表的部分元素——Python称之为切片 . 一.使用方法: 要创建切片,可指定要使用的第一个元素和最后一个元素的索引. 与函数range() 一样,Python在到达你指定的第二个索引前面 ...

  2. bzoj4320 homework 题解

    题面链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4320 令M=sqrt(mx),把询问的Y按M 分成两种不同的处理方式. 1.对于> ...

  3. node对称加密(转载)

    https://www.cnblogs.com/laogai/p/4664917.html

  4. Oracle SQL语句之常见优化方法总结

    1.用EXISTS替换DISTINCT 当SQL包含一对多表查询时,避免在SELECT子句中使用DISTINCT,一般用EXIST替换,EXISTS(低效): SELECT DISTINCT USER ...

  5. Java Web学习总结(19)——web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  6. 0708关于理解mysql SQL执行顺序

    转自 http://www.jellythink.com/archives/924,博客比价清晰 我理解上文的是SQL执行顺序 总体方案.当你加入索引了以后,其实他的执行计划是有细微的变化,比方说刚开 ...

  7. Linux显示使用命令who(转)

    Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者ID.使用的终端机.从哪边连上来的.上线时间.呆滞时间.CPU使用量.动作等等. 使用权限:所有使用者都可使用. 语法 ...

  8. REST当道,NO MVC

    前世今生 B/S开发经历了几个时代,如今已经是后MVC时期了. MVC体现了分层和解耦合的概念.从功能和理念上都做出过巨大贡献,使Java B/S开发在面对大型项目时从容不迫,说成是上个十年Java ...

  9. 为大家推荐一本书《jQuery Mobile 即学即用》

    这是人民邮电出版社出版的一本面向前端开发者的书. 非常喜欢书名"即学即用"这是每一个程序开发者的理想模式. 不同国家的人有不同的思维方式.这本书的作者是 [阿根廷] Maximil ...

  10. Java与设计模式-策略模式

    在实际开发中,可能会遇到这样一个情况,某一功能的实现分为多种算法,这些算法能够认定为策略,在实际操作时选择不同算法或策略进行操作得出终于结果.在实际生活中.这些样例也是举不胜举.比如.商场举行活动,满 ...