求割点模板(可求出割点数目及每个割点分割几个区域)POJ1966(Cable TV Network)
题目链接:传送门
题目大意:给你一副无向图,求解图的顶点连通度
题目思路:模板(图论算法理论,实现及应用 P396)
Menger定理:无向图G的顶点连通度k(G)和顶点间最大独立轨数目之间存在如下关系:
1.若G是完全图,k(G)=|V(G)|-1
2.若G不是完全图,k(G)=min{P(A,B)} 其中A,B不直接相连
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <climits>
#define lson root<<1,l,mid
#define rson root<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
#define Min(x,y) (x<y?x:y)
#define Max(x,y) (x>y?x:y)
using namespace std;
#define gamma 0.5772156649015328606065120
#define MOD 1000000007
#define inf 0x3f3f3f3f
#define N 10005
#define maxn 1000050
typedef long long LL;
typedef pair<int,int> PII; int n,m;
int lel[],head[];
struct Node{
int to,next,v;
Node(){}
Node(int a,int b,int c):to(a),next(b),v(c){}
}node[N];int hcnt; inline void init(){
hcnt=;
mst(head,-);
}
int bfs(int s,int t){
int i;
queue<int>q;
mst(lel,-);
lel[s]=;
q.push(s);
while(!q.empty()){
int x=q.front();q.pop();
if(x==t)return ;
for(i=head[x];~i;i=node[i].next){
int e=node[i].to;
if(lel[e]==-&&node[i].v){
lel[e]=lel[x]+;
q.push(e);
}
}
}
return ;
} inline void init_flow(){
for(int i=;i<hcnt;i+=){
node[i].v+=node[i^].v;
node[i^].v=;
}
} int dfs(int s,int t,int v){
if(s==t) return v;
int flow=;
for(int i=head[s];~i;i=node[i].next){
int e=node[i].to,f=node[i].v;
if(lel[e]==lel[s]+&&f){
int al=Min(v-flow,f);
al=dfs(e,t,al);
node[i].v-=al;
node[i^].v+=al;
flow+=al;
if(flow==v)return flow;
}
}
return flow;
} int Dinic(int s,int t){
int res=;
while(bfs(s,t))res+=dfs(s,t,inf);
return res;
} inline void add(int x,int y,int v){
node[hcnt]=Node(y,head[x],v);
head[x]=hcnt++;
node[hcnt]=Node(x,head[y],);
head[y]=hcnt++;
} int main(){
int i,j,group,Case=,x,y;
while(scanf("%d%d",&n,&m)!=EOF){
init();
for(i=;i<n;++i)add(i,i+n,);
while(m--){
scanf(" (%d,%d)",&x,&y);
add(x+n,y,inf);
add(y+n,x,inf);
}
int ans=inf;
for(i=;i<n;++i){
ans=min(ans,Dinic(+n,i));
init_flow();
}
if(ans==inf)ans=n;
printf("%d\n",ans);
}
return ;
}
求割点模板(可求出割点数目及每个割点分割几个区域)POJ1966(Cable TV Network)的更多相关文章
- POJ - 1966 Cable TV Network (最大流求点连通度)
题意:求一个无向图的点连通度.点联通度是指,一张图最少删掉几个点使该图不连通:若本身是非连通图,则点连通度为0. 分析:无向图的点连通度可以转化为最大流解决.方法是:1.任意选择一个点作为源点:2.枚 ...
- Tarjan求强连通分量、求桥和割点模板
Tarjan 求强连通分量模板.参考博客 #include<stdio.h> #include<stack> #include<algorithm> using n ...
- [poj1144]Network(求割点模板)
解题关键:割点模板题. #include<cstdio> #include<cstring> #include<vector> #include<stack& ...
- HDU4738 tarjan割边|割边、割点模板
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4738 坑点: 处理重边 图可能不连通,要输出0 若求出的结果是0,则要输出1,因为最少要派一个人 #inc ...
- 求中位数为K的区间的数目
给定一个长为 $n$ 的序列和常数 $k$,求此序列的中位数为 $k$ 的区间的数量.一个长为 $m$ 的序列的中位数定义为将此序列从小到大排序后第 $\lceil m / 2 \rceil$ 个数. ...
- 字符串_KMP算法(求next[]模板 hdu 1711)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 问题描述:给两个序列a,b,长度分别为n,m(1<=n<=1000000,1< ...
- LCS模板,求长度,并记录子串
//LCS模板,求长度,并记录子串 //亦可使用注释掉的那些代码,但所用空间会变大 #include<iostream> #include<cstring> #include ...
- 倍增求lca模板
倍增求lca模板 https://www.luogu.org/problem/show?pid=3379 #include<cstdio> #include<iostream> ...
- 求最小正整数x,A^x=1(mod M)求阶模板
整数的阶:设a和n是互素的正整数,使得a^x=1(mod n)成立的最小的正整数x称为a模n的阶 //求阶模板:A^x=1(mod M),调用GetJie(A,M) //输入:10^10>A,M ...
随机推荐
- 持续集成之Jenkins+Gitlab简介 [一]
转载:http://blog.csdn.net/abcdocker/article/details/53840449 持续集成概念 持续集成Continuous Integration 持续交付Con ...
- [WebView学习之三]:使用WebView来创建Apps
上一篇我们学习了([WebView学习之二]:使用Web Apps 支持不同分辨率屏),今天我们来继续学习. (博客地址:http://blog.csdn.net/developer_jiangqq) ...
- MySQL-配置优化技巧
一.连接请求配置 1.查询当前连接数(show full processlist) show full processlist; 2.最大连接数(max_connections) max_connec ...
- 一个请求在Struts2框架中的处理的步骤
- 集成ueditor工具
摘要: 摘要: 版权声明:本文为博主原创文章,未经博主允许不得转载. UEditor 是百度的一套开源的在线HTML编辑器. 第一步:去官网看官网文档,了解这个工具如何使用以及下载,本人下载的是1.4 ...
- Android源代码解析之(四)-->HandlerThread
转载请标明出处:一片枫叶的专栏 上一篇文章中我们解说了AsyncTast的基本使用以及实现原理,我们知道AsyncTask内部是通过线程池和Handler实现的.通过对线程池和handler的封装实现 ...
- 什么时候使用PHP设计模式和为什么要使用?
有大量的文章解释什么是设计模式,如何实现设计模式,网络上不需要再写一篇这样的文章.相反,在本文中我们更多的讨论什么时候用和为什么要用,而不是用哪一个和如何使用. 我将会为这些设计模式描绘不同的场景和案 ...
- unity UGUI text font size对性能影响较大
Font Size对ugui text的性能影响非常大. <Cube Duck Run>在itouch5上测试是很流畅的,但是在iphone5上测试,在game over后显示历史最高分时 ...
- C++语言基础(7)-inline内联函数
函数调用是有时间和空间开销的.程序在执行一个函数之前需要做一些准备工作,要将实参.局部变量.返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码:函数体中的代码执行完毕后还要清理现场,将之前压 ...
- C++注释规范
1 源文件头部注释 列出:版权.作者.编写日期和描述. /************************************************* Copyright:bupt Auth ...