【UVA1660】Cable TV Network
题目大意:给定一个 N 个点的无向图,求至少删去多少个点可以使得无向图不连通。
题解:学习到了点边转化思想。
根据网络流的知识可知,一个网络的最小割与网络的最大流相等。不过最小割是图的边集,而本题则是删去节点。考虑将一个节点拆分成两个节点,即:入点和出点,对于同一个节点,在入点和出点之间的边权为 1,其他无向边之间转化成出点和入点之间的连接,边权设为 inf,表示不能割断边。最后,枚举图中任意两点,计算最大流的最小值即可。
注意:网络流建图一定要记得加上反向边。。。QAQ
代码如下
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
using namespace std;
typedef pair<int,int> P;
const int maxn=110;
const int maxm=2e4+10;
const int inf=1e5;
inline int read(){
int x=0,f=1;char ch;
do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
return f*x;
}
int n,m,s,t,maxflow,now,d[maxn];
vector<P> edge;
struct node{int nxt,to,w;}e[maxm<<1];
int tot=1,head[maxn];
inline void add_edge(int from,int to,int w){
e[++tot]=node{head[from],to,w},head[from]=tot;
e[++tot]=node{head[to],from,0},head[to]=tot;
}
bool bfs(){
queue<int> q;
memset(d,0,sizeof(d));
q.push(s),d[s]=1;
while(q.size()){
int u=q.front();q.pop();
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to,w=e[i].w;
if(w&&!d[v]){
d[v]=d[u]+1;
q.push(v);
if(v==t)return 1;
}
}
}
return 0;
}
int dinic(int u,int flow){
if(u==t)return flow;
int rest=flow;
for(int i=head[u];i&&rest;i=e[i].nxt){
int v=e[i].to,w=e[i].w;
if(d[v]==d[u]+1&&w){
int k=dinic(v,min(w,rest));
if(!k)d[v]=0;
e[i].w-=k,e[i^1].w+=k,rest-=k;
}
}
return flow-rest;
}
void solve(){
edge.clear();
for(int i=1;i<=m;i++){
int x=read()+1,y=read()+1;
edge.pb(mp(x,y));
}
int ans=inf;
for(s=1;s<=n;s++)
for(t=s+1;t<=n;t++){
memset(head,0,sizeof(head)),tot=1;
for(int i=1;i<=n;i++){
if(i==s||i==t)add_edge(i,i+n,inf);
else add_edge(i,i+n,1);
}
for(int i=0;i<edge.size();i++){
int x=edge[i].first,y=edge[i].second;
add_edge(x+n,y,inf),add_edge(y+n,x,inf);
}
now=maxflow=0;
while(bfs())while(now=dinic(s,inf))maxflow+=now;
ans=min(ans,maxflow);
}
if(n<=1||ans==inf)ans=n;
printf("%d\n",ans);
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF)solve();
return 0;
}
【UVA1660】Cable TV Network的更多相关文章
- UVA1660 电视网络 Cable TV Network
题目地址:UVA1660 电视网络 Cable TV Network 枚举两个不直接连通的点 \(S\) 和 \(T\) ,求在剩余的 \(n-2\) 个节点中最少去掉多少个可以使 \(S\) 和 \ ...
- UVA1660 电视网络 Cable TV Network[拆点+最小割]
题意翻译 题目大意: 给定一个n(n <= 50)个点的无向图,求它的点联通度.即最少删除多少个点,使得图不连通. 解析 网络瘤拆点最小割. 定理 最大流\(=\)最小割 感性地理解(口胡)一下 ...
- POJ 1966 Cable TV Network(顶点连通度的求解)
Cable TV Network Time Limit: 1000MS Memory Limit: 30000K Total Submissi ...
- POJ 1966 Cable TV Network
Cable TV Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4702 Accepted: 2173 ...
- 【BZOJ1146】[CTSC2008]网络管理Network 树状数组+DFS序+主席树
[BZOJ1146][CTSC2008]网络管理Network Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工 ...
- POJ 1966 Cable TV NETWORK(网络流-最小点割集)
Cable TV NETWORK The interconnection of the relays in a cable TV net ...
- Cable TV Network 顶点连通度 (最大流算法)
Cable TV Network 题目抽象:给出含有n个点顶点的无向图,给出m条边.求定点联通度 K 算法:将每个顶点v拆成 v' v'' ,v'-->v''的容量为1. ...
- 【RS】Collaborative Memory Network for Recommendation Systems - 基于协同记忆网络的推荐系统
[论文标题]Collaborative Memory Network for Recommendation Systems (SIGIR'18) [论文作者]—Travis Ebesu (San ...
- 【bzoj1146】[CTSC2008]网络管理Network 倍增LCA+dfs序+树状数组+主席树
题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高 ...
随机推荐
- Java新知识系列 七
抽象类和接口的区别和特点 java的JDK中包含的五个工具 编译型语言和解释型语言 Java和C++的区别` 常见的ASCII的值 Forward和Redirect之间的对比 Web Service ...
- 结对编程项目——C语言实现WordCount Web化
结对编程项目 代码地址 201631062219,201631011410 gitee项目地址:https://gitee.com/xxlznb/pair_programming 作业地址:https ...
- SQL Server中LIKE %search_string% 走索引查找(Index Seek)浅析
在SQL Server的SQL优化过程中,如果遇到WHERE条件中包含LIKE '%search_string%'是一件非常头痛的事情.这种情况下,一般要修改业务逻辑或改写SQL才能解决SQL执行 ...
- mssql sqlserver 索引专题
摘要: 下文将详细讲述sql server 索引的相关知识,如下所示: 实验环境: sql server 2008 R2 sqlserver索引简介: mssql sqlsever 索引分类简介 ms ...
- python模块shutil
shutil.copyfileobj(fsrc, fdst,[ length]) 拷贝文件句柄,将类文件对象fsrc的内容复制到类文件对象fdst.如果给定整数长度,则为缓冲区大小.如果长度是负值意味 ...
- 浅谈TCP IP协议栈(一)入门知识【转】
说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...
- Ubuntu17.04 sudo apt-get update升级错误
最近在折腾Ubuntu,安装的是17.04版本的.想安装PHP7.X最新版本,但是要先升级.利用sudo apt-get update命名后,出现了以下报错: 忽略:1 http://cn.archi ...
- 转:[kipmi0]进程导致系统负载高
最近一个用户这边服务器出现服务器负载很高的情况,原本正常是0.3~0.5左右 不正常的时候会达到3,重启机器就正常,开始以为是程序问题,后来在观察的时候把程序给杀掉了 然后重启,结果负载还是很高,于 ...
- Maven的简单使用
Maven使用 在官网下载maven: http://maven.apache.org/download.cgi 解压到D盘(位置随便) 配置环境变量 打开dos窗口,检测是否成功,出现如下画面表示配 ...
- 多线程中的event,用于多线程的协调
''' 简单的需求:红绿灯,红灯停,绿灯行 一个线程扮演红绿灯,每过一段时间灯变化,3-5个线程扮演车,红灯停,绿灯行 红绿灯线程和车的线程会相互依赖 这种场景怎么实现?---事件 切换一次灯就是一次 ...