poj 1966 Cable TV Network 顶点连通度
题目链接
给一个图, n个点m条边, 求至少去掉多少个点可以使得图不再联通。
随便指定一个点为源点, 枚举其他点为汇点的情况, 跑网络流, 求其中最小的情况。 如果最后ans为inf, 说明是一个完全图, 那么结果就为n。
1 #include <iostream> 2 #include <vector> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 #include <cmath> 7 #include <map> 8 #include <set> 9 #include <string> 10 #include <queue> 11 using namespace std; 12 #define pb(x) push_back(x) 13 #define ll long long 14 #define mk(x, y) make_pair(x, y) 15 #define lson l, m, rt<<1 16 #define mem(a) memset(a, 0, sizeof(a)) 17 #define rson m+1, r, rt<<1|1 18 #define mem1(a) memset(a, -1, sizeof(a)) 19 #define mem2(a) memset(a, 0x3f, sizeof(a)) 20 #define rep(i, a, n) for(int i = a; i<n; i++) 21 #define ull unsigned long long 22 typedef pair<int, int> pll; 23 const double PI = acos(-1.0); 24 const double eps = 1e-8; 25 const int mod = 1e9+7; 26 const int inf = 1061109567; 27 const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }; 28 const int maxn = 4e4+5; 29 int q[maxn*2], head[maxn*2], dis[maxn/10], s, t, num, edge[2500][2]; 30 struct node 31 { 32 int to, nextt, c; 33 node(){} 34 node(int to, int nextt, int c):to(to), nextt(nextt), c(c){} 35 }e[maxn*2]; 36 void init() { 37 num = 0; 38 mem1(head); 39 } 40 void add(int u, int v, int c) { 41 e[num] = node(v, head[u], c); head[u] = num++; 42 e[num] = node(u, head[v], 0); head[v] = num++; 43 } 44 int bfs() { 45 mem(dis); 46 dis[s] = 1; 47 int st = 0, ed = 0; 48 q[ed++] = s; 49 while(st<ed) { 50 int u = q[st++]; 51 for(int i = head[u]; ~i; i = e[i].nextt) { 52 int v = e[i].to; 53 if(!dis[v]&&e[i].c) { 54 dis[v] = dis[u]+1; 55 if(v == t) 56 return 1; 57 q[ed++] = v; 58 } 59 } 60 } 61 return 0; 62 } 63 int dfs(int u, int limit) { 64 if(u == t) { 65 return limit; 66 } 67 int cost = 0; 68 for(int i = head[u]; ~i; i = e[i].nextt) { 69 int v = e[i].to; 70 if(e[i].c&&dis[v] == dis[u]+1) { 71 int tmp = dfs(v, min(limit-cost, e[i].c)); 72 if(tmp>0) { 73 e[i].c -= tmp; 74 e[i^1].c += tmp; 75 cost += tmp; 76 if(cost == limit) 77 break; 78 } else { 79 dis[v] = -1; 80 } 81 } 82 } 83 return cost; 84 } 85 int dinic() { 86 int ans = 0; 87 while(bfs()) { 88 ans += dfs(s, inf); 89 } 90 return ans; 91 } 92 int main() 93 { 94 int n, m, x, y; 95 while(~scanf("%d%d", &n, &m)) { 96 for(int i = 0; i<m; i++) { 97 scanf(" (%d,%d)", &edge[i][0], &edge[i][1]); 98 } 99 s = n; 100 int ans = inf; 101 for(int i = 1; i<n; i++) { 102 t = i; 103 init(); 104 for(int j = 0; j<m; j++) { 105 int x = edge[j][0]; 106 int y = edge[j][1]; 107 add(x+n, y, inf); 108 add(y+n, x, inf); 109 } 110 for(int j = 0; j<n; j++) 111 add(j, j+n, 1); 112 ans = min(ans, dinic()); 113 } 114 if(ans == inf) 115 ans = n; 116 cout<<ans<<endl; 117 } 118 return 0; 119 }
转载于:https://www.cnblogs.com/yohaha/p/5060401.html
poj 1966 Cable TV Network 顶点连通度相关推荐
- POJ 1966 Cable TV Network (最大流最小割)
$ POJ~1966~Cable~TV~Network $ $ solution: $ 第一眼可能让人很难下手,但本就是冲着网络流来的,所以我们直接一点.这道题我们要让这个联通图断开,那么势必会有两个 ...
- [POJ 1966] Cable TV Network
[题目链接] http://poj.org/problem?id=1966 [算法] 拆点 + 最小割 [代码] #include <algorithm> #include <bit ...
- POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】
题目描述: 给你一个无向图,问你最少删掉几个点,使这个图成不连通. 解题报告: 概念 (1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通, ...
- POJ - 1966 Cable TV Network(最小割-最大流)
题目链接:点击查看 题目大意:给定一张无向图,求最少去掉多少个点,可以使图不连通 题目分析:让图不连通,也就是让图分成两个部分,这样题目就转换成了最小割的问题了,不过最小割问题是要求最小割边,所以我们 ...
- 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 因为删去某个点集而不 ...
最新文章
- python课程与c+课程有什么不同-C和Python我该先学什么?
- pmbook 知识领域 第六版_PMP项目管理10大知识领域脑图
- Fiddler 从安装到使用 (creation of the root certificate wasn)
- 题解【bzoj4653 [NOI2016] 区间】
- dotnet 基于 dotnet format 的 GitHub Action 自动代码格式化机器人
- React开发(116):ant design search引入
- 作者:张国惠(1978-),男,美国新墨西哥大学土木工程系助理教授、博士生导师。...
- centos系统中,相同的shell命令,直接在命令行中可以执行,在.sh文件中运行不了的原因
- Selenium UI自动化测试(一)环境配置
- 汽车维保反欺诈系统的设计和算法应用
- 微信Bscroll事件
- win7 sp1简体中文升级补丁包(64位)
- Gallery3d 学习笔记(6)
- 智能暖风机——3.利用B3950实现温度采集功能
- 基本逻辑门电路 - 异或
- 开放经济中的货币-中国视角下的宏观经济
- 数据库常见问题:服务器'SQL SERVER'上的 MSDTC 不可用
- 解决 input 输入框在 iOS 系统中无法输入内容
- 程序员画图利器——Visio
- 数据库的这些你都知道吗?
热门文章
- linux 中网卡配置命令 ifconfig简介
- [转]Effective C#原则4:用条件属性而不是#if
- python高级函数、将函数作为变量、返回函数_从函数外部返回变量名,作为python函数内部的字符串...
- java 鼠标拖动_java 让表项支持鼠标拖动移位,并自动滚动滚动条
- 城市天际线 android,都市天际线安卓手机版
- 【系统架构设计师】软考高级职称,一次通过,倾尽所有,看完这篇就够了,论软件架构设计的重要性、本篇论文“未通过考试”,供分析参考
- java 访问网络驱动器_尝试通过GitLab Runner脚本访问网络驱动器但收到错误
- 在Linux系统下初始化COM组件,Linux操作系统的引导和初始化.doc
- openssh漏洞_技术干货 | OpenSSH命令注入漏洞复现(CVE202015778)
- ef 执行mysql语句_在EF中执行SQL语句