[POJ 1966] Cable TV Network
[题目链接]
http://poj.org/problem?id=1966
[算法]
拆点 + 最小割
[代码]
#include <algorithm> #include <bitset> #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque> #include <exception> #include <fstream> #include <functional> #include <limits> #include <list> #include <map> #include <iomanip> #include <ios> #include <iosfwd> #include <iostream> #include <istream> #include <ostream> #include <queue> #include <set> #include <sstream> #include <stdexcept> #include <streambuf> #include <string> #include <utility> #include <vector> #include <cwchar> #include <cwctype> #include <stack> #include <limits.h> using namespace std; const int inf = 2e9; #define MAXN 55int i,n,m,s,t,ans,S,T,tot; int head[MAXN << 1],depth[MAXN << 1],u[MAXN * MAXN],v[MAXN * MAXN]; bool g[MAXN][MAXN];struct edge {int to,w,nxt; } e[MAXN * MAXN * 2];inline void addedge(int u,int v,int w) {tot++;e[tot] = (edge){v,w,head[u]};head[u] = tot;tot++;e[tot] = (edge){u,0,head[v]};head[v] = tot; } inline bool bfs() {int i,l,r,u,v,w;static int q[MAXN << 1];memset(depth,0,sizeof(depth));q[l = r = 1] = S;depth[S] = 1;while (l <= r){u = q[l];l++;for (i = head[u]; i; i = e[i].nxt){v = e[i].to;w = e[i].w;if (!depth[v] && w){depth[v] = depth[u] + 1;q[++r] = v;if (v == T) return true;}}}return false; } inline int dinic(int u,int flow) {int i,v,w,k,rest = flow;if (u == T) return flow;for (i = head[u]; i && rest; i = e[i].nxt){v = e[i].to;w = e[i].w;if (depth[v] == depth[u] + 1 && w){k = dinic(v,min(rest,w));if (!k) depth[v] = 0;e[i].w -= k;e[i ^ 1].w += k;rest -= k;}}return flow - rest; } inline int getans(int s,int t) {int i,Minimum_Cut,flow;tot = 1;memset(head,0,sizeof(head));for (i = 0; i < n; i++) {if (i != s && i != t)addedge(i,i + n,1);else addedge(i,i + n,inf);}for (i = 1; i <= m; i++){addedge(u[i] + n,v[i],inf);addedge(v[i] + n,u[i],inf); } Minimum_Cut = 0;S = s;T = t;while (bfs()){while (flow = dinic(S,inf)) Minimum_Cut += flow;}return Minimum_Cut; }int main() {while (scanf("%d%d",&n,&m) != EOF){ans = inf;memset(g,false,sizeof(g));for (i = 1; i <= m; i++) {scanf(" (%d,%d)",&u[i],&v[i]);g[u[i]][v[i]] = g[v[i]][u[i]] = true;}for (s = 0; s < n; s++) {for (t = 0; t < n; t++){if (!g[s][t] && s != t) ans = min(ans,getans(s,t));}}if (n <= 1 || ans == inf) ans = n;printf("%d\n",ans);}return 0;}
转载于:https://www.cnblogs.com/evenbao/p/9425494.html
[POJ 1966] Cable TV Network相关推荐
- POJ 1966 Cable TV Network (最大流最小割)
$ POJ~1966~Cable~TV~Network $ $ solution: $ 第一眼可能让人很难下手,但本就是冲着网络流来的,所以我们直接一点.这道题我们要让这个联通图断开,那么势必会有两个 ...
- POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】
题目描述: 给你一个无向图,问你最少删掉几个点,使这个图成不连通. 解题报告: 概念 (1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通, ...
- POJ - 1966 Cable TV Network(最小割-最大流)
题目链接:点击查看 题目大意:给定一张无向图,求最少去掉多少个点,可以使图不连通 题目分析:让图不连通,也就是让图分成两个部分,这样题目就转换成了最小割的问题了,不过最小割问题是要求最小割边,所以我们 ...
- poj 1966 Cable TV Network 顶点连通度
题目链接 给一个图, n个点m条边, 求至少去掉多少个点可以使得图不再联通. 随便指定一个点为源点, 枚举其他点为汇点的情况, 跑网络流, 求其中最小的情况. 如果最后ans为inf, 说明是一个完全 ...
- poj 1966 Cable TV Network
求删除最少的点使得图不联通 将每一个点拆分为i,i',连接i,i'为1,若原图中存在g[u][v] = 1,连接u'到v,容量为INF,连接u,u'为1,连接v,v'为1 枚举源点和汇点,求出最小的最 ...
- Cable TV Network POJ - 1966 最大流最小割定理 点边转化
最大流最小割定理 任何一个网络的最大流量等于最小割中边的容量之和 即最大流等于最小割 点边转化 节点可以拆为入点和出点 把点的属性添加到入点和出点之间的边上 图的边也可以分两截 在中间加一个节点 把边 ...
- POJ1966 Cable TV Network
一.原题链接:http://poj.org/problem?id=1966 二.题目大意:给你一个很裸的网络,让你判断最少去掉多少个点能够使其不连通.注意是无向图. 三.思路:枚举每个源点和汇点,求每 ...
- UVA1660 电视网络 Cable TV Network(网络流,最小割)
题目链接 题意翻译 电视电缆网络的继电器之间的连接是双向的.如果任意两个继电器之间都连通,那么这个网络就是连通的,否则不连通.特别地,一个空网络或只有一个继电器的网络是连通的. 定义一个有n个继电器的 ...
- POJ 1966 枚举 + Dinic
题意 传送门 POJ 1966 Cable TV Network 题解 若无向图不连通,则图中至少存在两个点不连通,则可以枚举这两个点.若两个不同的点 s , t s,t s,t 因为删去某个点集而不 ...
最新文章
- jupyter notebook使用技巧
- Dubbo Cloud Native 实践与思考
- Install KVM Hypervisor on arrch64 Linux Server
- Linux下VNC配置多个桌面和修改密码 不会当系统重启vnc失效
- Boost:是否支持sse4.1指令的测试程序
- 数字信号处理基础知识之DFT、DTFT、DFS、FFT基本概念扫盲
- 业务编排可视化_微服务设计-服务组合和可视化编排思考
- IT男,程序猿在婚恋市场有多受欢迎?
- java编程50题和解释_最新JAVA编程题全集(50题及答案)29515
- 多小区下小区上行速率的计算(3)
- C#制作Arcgis Engine鹰眼全过程(引自ESRI中国社区)
- ZedGraph例子
- 和差测角天线方向图仿真matlab 含代码
- 经常被问到的有深度有内涵的数据结构面试题
- 练习STM32动态更改PWM波频率和占空比
- linux创建用户,添加及修改shell
- LLMs之Alpaca:《Alpaca: A Strong, Replicable Instruction-Following Model》翻译与解读
- 大数据行业薪资有多少 如何去学习大数据开发
- 青大计算机学院保研,学在青大丨青大最强的榜样在这里(电子信息学院篇)
- 考研复试软件测试面试,如果考研复试采取远程面试,这4个要点一定要做好!...
热门文章
- c语言作业自动批改代码,C语言助教用于批量改作业的脚本
- 技术驱动游戏行业创新,九四玩完成首轮战略融资
- 【python】Visualization of field data(NBA)
- android好用的曲线图控件,Android图表控件MPAndroidChart——曲线图LineChart的使用(多条曲线)...
- 使用遗传算法解旅行商问题
- 开放式耳机和封闭式耳机有什么区别,那开放式耳机对耳朵伤害大吗?
- 中国联通千兆网络准备在即 百卓网络喜获“千兆宽带设备合作伙伴”奖
- POJ 1700 过河坐船最短时间问题
- cf不显示前往回归服务器,CF玩家回归,频道爆满挤不进,老玩家泪目:这不就是当年的CF...
- php 实现店铺装修4