求割点模板(可求出割点数目及每个割点分割几个区域)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 ...
随机推荐
- Linux 网卡驱动学习(一)(分析一个虚拟硬件的网络驱动样例)
在Linux,网络分为两个层,各自是网络堆栈协议支持层,以及接收和发送网络协议的设备驱动程序层. 网络堆栈是硬件中独立出来的部分.主要用来支持TCP/IP等多种协议,网络设备驱动层是连接网络堆栈协议层 ...
- 实现微信浏览器内打开App Store链接
http://www.ildsea.com/1781.html 微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itune ...
- sql中limit和汇总函数的集合使用
limit和求和一起 select SUM(A.high) from (select * from minute1_K order by DateTime desc limit 10) A limit ...
- mui.ajax返回type为abort
最近在使用h5和mui开发app,发现mui.ajax有一个小bug 情况一: 参数和请求路径无误,但是总是调起失败的回调函数,打印出 type=abort (终止请求) 原因: mui.ajax默认 ...
- android中点击事件的4种写法
android中获取到一些控件(比如说按钮)时,一般会为其添加点击事件,android中的点击事件一共有4中写法. 假设在布局文件中声明如下 ....... <Button android:la ...
- nvidia显卡驱动卸载和卸载后的问题
因为装了nvidia显卡驱动后开机一直处于循环登录界面.password输入正确也是进不去.然后就决定卸载nvidia显卡驱动.安装之后出现还是循环登陆. 是openGL的问题 有至少两种解决方 ...
- Hive row_number() 等用法
1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...
- memcached 命令行举例
1.启动Memcache 常用参数 memcached 1.4.3 -p <num> 设置端口号(默认不设置为: 11211) -U <num> UDP监听端口 (默 ...
- vm中安装ubuntu16
安装完成后,开机出现 smbus host controller not enabled 上网照着网友的建议: 在grub界面选择高级选项 root shell 进入到shell之后 mount -o ...
- CronTrigger中cron表达式使用
1.定时任务,当执行是具体时间的时候,不会立即执行,而是到指定时间执行. 2.实现Job接口时候,类中要有无参的public构造方法. 3.表达式中共用七个字段,按顺序是秒.分.时.日.月.周.年,默 ...