[题目链接]

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相关推荐

  1. POJ 1966 Cable TV Network (最大流最小割)

    $ POJ~1966~Cable~TV~Network $ $ solution: $ 第一眼可能让人很难下手,但本就是冲着网络流来的,所以我们直接一点.这道题我们要让这个联通图断开,那么势必会有两个 ...

  2. POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】

    题目描述: 给你一个无向图,问你最少删掉几个点,使这个图成不连通. 解题报告: 概念 (1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通, ...

  3. POJ - 1966 Cable TV Network(最小割-最大流)

    题目链接:点击查看 题目大意:给定一张无向图,求最少去掉多少个点,可以使图不连通 题目分析:让图不连通,也就是让图分成两个部分,这样题目就转换成了最小割的问题了,不过最小割问题是要求最小割边,所以我们 ...

  4. poj 1966 Cable TV Network 顶点连通度

    题目链接 给一个图, n个点m条边, 求至少去掉多少个点可以使得图不再联通. 随便指定一个点为源点, 枚举其他点为汇点的情况, 跑网络流, 求其中最小的情况. 如果最后ans为inf, 说明是一个完全 ...

  5. poj 1966 Cable TV Network

    求删除最少的点使得图不联通 将每一个点拆分为i,i',连接i,i'为1,若原图中存在g[u][v] = 1,连接u'到v,容量为INF,连接u,u'为1,连接v,v'为1 枚举源点和汇点,求出最小的最 ...

  6. Cable TV Network POJ - 1966 最大流最小割定理 点边转化

    最大流最小割定理 任何一个网络的最大流量等于最小割中边的容量之和 即最大流等于最小割 点边转化 节点可以拆为入点和出点 把点的属性添加到入点和出点之间的边上 图的边也可以分两截 在中间加一个节点 把边 ...

  7. POJ1966 Cable TV Network

    一.原题链接:http://poj.org/problem?id=1966 二.题目大意:给你一个很裸的网络,让你判断最少去掉多少个点能够使其不连通.注意是无向图. 三.思路:枚举每个源点和汇点,求每 ...

  8. UVA1660 电视网络 Cable TV Network(网络流,最小割)

    题目链接 题意翻译 电视电缆网络的继电器之间的连接是双向的.如果任意两个继电器之间都连通,那么这个网络就是连通的,否则不连通.特别地,一个空网络或只有一个继电器的网络是连通的. 定义一个有n个继电器的 ...

  9. POJ 1966 枚举 + Dinic

    题意 传送门 POJ 1966 Cable TV Network 题解 若无向图不连通,则图中至少存在两个点不连通,则可以枚举这两个点.若两个不同的点 s , t s,t s,t 因为删去某个点集而不 ...

最新文章

  1. jupyter notebook使用技巧
  2. Dubbo Cloud Native 实践与思考
  3. Install KVM Hypervisor on arrch64 Linux Server
  4. Linux下VNC配置多个桌面和修改密码 不会当系统重启vnc失效
  5. Boost:是否支持sse4.1指令的测试程序
  6. 数字信号处理基础知识之DFT、DTFT、DFS、FFT基本概念扫盲
  7. 业务编排可视化_微服务设计-服务组合和可视化编排思考
  8. IT男,程序猿在婚恋市场有多受欢迎?
  9. java编程50题和解释_最新JAVA编程题全集(50题及答案)29515
  10. 多小区下小区上行速率的计算(3)
  11. C#制作Arcgis Engine鹰眼全过程(引自ESRI中国社区)
  12. ZedGraph例子
  13. 和差测角天线方向图仿真matlab 含代码
  14. 经常被问到的有深度有内涵的数据结构面试题
  15. 练习STM32动态更改PWM波频率和占空比
  16. linux创建用户,添加及修改shell
  17. LLMs之Alpaca:《Alpaca: A Strong, Replicable Instruction-Following Model》翻译与解读
  18. 大数据行业薪资有多少 如何去学习大数据开发
  19. 青大计算机学院保研,学在青大丨青大最强的榜样在这里(电子信息学院篇)
  20. 考研复试软件测试面试,如果考研复试采取远程面试,这4个要点一定要做好!...

热门文章

  1. c语言作业自动批改代码,C语言助教用于批量改作业的脚本
  2. 技术驱动游戏行业创新,九四玩完成首轮战略融资
  3. 【python】Visualization of field data(NBA)
  4. android好用的曲线图控件,Android图表控件MPAndroidChart——曲线图LineChart的使用(多条曲线)...
  5. 使用遗传算法解旅行商问题
  6. 开放式耳机和封闭式耳机有什么区别,那开放式耳机对耳朵伤害大吗?
  7. 中国联通千兆网络准备在即 百卓网络喜获“千兆宽带设备合作伙伴”奖
  8. POJ 1700 过河坐船最短时间问题
  9. cf不显示前往回归服务器,CF玩家回归,频道爆满挤不进,老玩家泪目:这不就是当年的CF...
  10. php 实现店铺装修4