图的连通性问题包括:

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. day37-2元类,单例模式

    目录 元类 造类的第一种形式 class做了什么事 控制元类产生的类 控制元类产生的对象 实例化类 加上元类后类的属性查找顺序 元类控制模版 单例模式 1. 使用类方法的特性 2. 使用装饰器 3. ...

  2. Golang实现常用排序算法

    主函数package main import ( "fmt" "math/rand" "sort" "time") co ...

  3. Uoj #218. 【UNR #1】火车管理 可持久化线段树+思维

    Code: #include<bits/stdc++.h> #define maxn 500005 using namespace std; int n,Q,ty,lastans=0; i ...

  4. 【转载】使用JSONObject生成和解析json

    1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空值 (1)json中不区分整数.小数等类型, ...

  5. python jieba分词(添加停用词,用户字典 取词频

    中文分词一般使用jieba分词 1.安装 pip install jieba 2.大致了解jieba分词 包括jieba分词的3种模式 全模式 import jieba seg_list = jieb ...

  6. 移动端自动化测试-WTF Appium

    手机App分为两大类,原生App(Native App)和混合APP(Hybrid App) 原生App(Native App) 原生App实际就是我们所常见的传统App开发模式,云端数据存储+App ...

  7. SSL/TLS 加密新纪元 - Let's Encrypt

    转自: https://linux.cn/article-6565-1.html SSL/TLS 加密新纪元 - Let's Encrypt 根据 Let's Encrypt 官方博客消息,Let's ...

  8. 51nod1183 编辑距离【动态规划】

    编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除 ...

  9. 【[Offer收割]编程练习赛11 B】物品价值

    [题目链接]:http://hihocoder.com/problemset/problem/1486 [题意] [题解] 设f[i][j]表示前i个物品,每种属性的状态奇偶状态为j的最大价值; 这里 ...

  10. String Boot-thymeleaf使用(四)

    简介 Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至纯文本.,可以完全替代jsp,也是spring boot官方推荐 ...