题目链接:传送门

题目大意:给你一副无向图,求解图的顶点连通度

题目思路:模板(图论算法理论,实现及应用 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)的更多相关文章

  1. POJ - 1966 Cable TV Network (最大流求点连通度)

    题意:求一个无向图的点连通度.点联通度是指,一张图最少删掉几个点使该图不连通:若本身是非连通图,则点连通度为0. 分析:无向图的点连通度可以转化为最大流解决.方法是:1.任意选择一个点作为源点:2.枚 ...

  2. Tarjan求强连通分量、求桥和割点模板

    Tarjan 求强连通分量模板.参考博客 #include<stdio.h> #include<stack> #include<algorithm> using n ...

  3. [poj1144]Network(求割点模板)

    解题关键:割点模板题. #include<cstdio> #include<cstring> #include<vector> #include<stack& ...

  4. HDU4738 tarjan割边|割边、割点模板

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4738 坑点: 处理重边 图可能不连通,要输出0 若求出的结果是0,则要输出1,因为最少要派一个人 #inc ...

  5. 求中位数为K的区间的数目

    给定一个长为 $n$ 的序列和常数 $k$,求此序列的中位数为 $k$ 的区间的数量.一个长为 $m$ 的序列的中位数定义为将此序列从小到大排序后第 $\lceil m / 2 \rceil$ 个数. ...

  6. 字符串_KMP算法(求next[]模板 hdu 1711)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 问题描述:给两个序列a,b,长度分别为n,m(1<=n<=1000000,1< ...

  7. LCS模板,求长度,并记录子串

    //LCS模板,求长度,并记录子串  //亦可使用注释掉的那些代码,但所用空间会变大 #include<iostream> #include<cstring> #include ...

  8. 倍增求lca模板

    倍增求lca模板 https://www.luogu.org/problem/show?pid=3379 #include<cstdio> #include<iostream> ...

  9. 求最小正整数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 ...

随机推荐

  1. 转:【AI每日播报】从TensorFlow到Theano:横向对比七大深度学习框架

    http://geek.csdn.net/news/detail/139235 说到近期的深度学习框架,TensorFlow火的不得了,虽说有专家在朋友圈大声呼吁,不能让TensorFlow形成垄断地 ...

  2. 淘宝分布式配置管理服务Diamond

    转载:http://blog.csdn.net/kevinlynx/article/details/40017109 在一个分布式环境中,同类型的服务往往会部署很多实例.这些实例使用了一些配置,为了更 ...

  3. maven 插件之 AutoConfig 工具使用笔记

    AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...

  4. webpack入门学习总结

    <h5概述</h5> webpack是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分 ...

  5. Unity3D使用TCP/IP协议,传递protocol buffer消息protobuf-net

    原文:http://my.oschina.net/faint/blog/296785 第一部分 dll 1 下面大多数内容,都是使用c#编译的dll来实现的. 2 编译为dll后,要拖放到unity3 ...

  6. 【Python】self的用法扫盲

    在Python中,我们有两个重要的概念:类与实例 例如:我们在现实生活中人就是一个类,实例就是具体到某一个男人(张三.李四等) 1.类:定义人这个类 class People(object): pas ...

  7. AngularJs学习笔记(4)——自定义指令

    对指令的第一印象:它是一个自定义标签! 先来看一个简单的指令: <!doctype html> <html ng-app="myApp"> <head ...

  8. C# DateTime的11种构造函数

    别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Globalization; using Syste ...

  9. linux-c 调试 gdb

    GDB(GNU Debugger) gcc -g –o testarg testarg.c //可执行文件中带上调试信息,用于后续的gdb调试 gdb testarg l; list //显示源程序 ...

  10. 自己动手开发更好用的markdown编辑器-06(自动更新)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/05/12/hexomd-06/   文章目录 1. 自动更新方案 2. 实现 ...