Cable TV Network 顶点连通度 (最大流算法)
题目抽象:给出含有n个点顶点的无向图,给出m条边。求定点联通度 K
算法:将每个顶点v拆成 v' v'' ,v'-->v''的容量为1. 对于原图中的边(u,v) 连边 u''--->v' v''-->u'. 求每对定点的P(u,v);以u为源点,v为汇点。
我们只需固定一个顶点,枚举其它汇点。
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cmath>
5 #include <algorithm>
6 #include <string>
7 #include <vector>
8 #include <set>
9 #include <map>
10 #include <stack>
11 #include <queue>
12 #include <sstream>
13 #include <iomanip>
14 using namespace std;
15 typedef long long LL;
16 const int INF = 0x4fffffff;
17 const double EXP = 1e-5;
18 const int MS = 105;
19 const int SIZE = 100005;
20
21 // 求无向图的顶点连通度 最大流算法
22
23 int cap[MS][MS];
24 int flow[MS][MS]; //将struct c f 拆开成两个数组
25 int que[MS];
26 int pre[MS];
27 int alpha[MS];
28 int qs,qe,nodes;
29 int n,m;
30
31 int max_flow(int source ,int sink)
32 {
33 memset(flow,0,sizeof(flow)); // 0流 开始增加流量
34 int res=0;
35 while(1)
36 {
37 qs=qe=0;
38 que[qe++]=source;
39 memset(pre,-1,sizeof(pre)); // pre可以同时起到flag的作用
40 memset(alpha,-1,sizeof(alpha));
41 alpha[source]=INF;
42 pre[source]=-2; // -2 结束标记,同时又避免了-1,表示未访问
43 while(qs<qe)
44 {
45 int u=que[qs++];
46 for(int v=0;v<nodes;v++)
47 {
48 if(pre[v]==-1&&flow[u][v]<cap[u][v])
49 {
50 que[qe++]=v;
51 pre[v]=u;
52 alpha[v]=min(alpha[u],cap[u][v]-flow[u][v]);
53 }
54 }
55 if(pre[sink]!=-1)
56 {
57 int k=sink;
58 while(pre[k]>=0)
59 {
60 flow[pre[k]][k]+=alpha[sink];
61 flow[k][pre[k]]=-flow[pre[k]][k];
62 k=pre[k];
63 }
64 break;
65 }
66 }
67 if(pre[sink]==-1) //不存在增广路
68 return res;
69 else
70 res+=alpha[sink];
71 }
72 }
73
74 int main()
75 {
76 while(scanf("%d%d",&n,&m)!=EOF)
77 {
78 int a,b,ans=INF;
79 memset(cap,0,sizeof(cap));
80 nodes=2*n;
81 for(int i=0;i<n;i++)
82 cap[i][i+n]=1;
83 for(int i=0;i<m;i++)
84 {
85 scanf(" (%d,%d)",&a,&b);
86 cap[a+n][b]=cap[b+n][a]=INF;
87 }
88 for(int v=1;v<n;v++)
89 {
90 ans=min(ans,max_flow(n,v));
91 }
92 if(ans==INF)
93 ans=n;
94 printf("%d\n",ans);
95 }
96 return 0;
97 }
Cable TV Network 顶点连通度 (最大流算法)的更多相关文章
- poj 1966 Cable TV Network 顶点连通度
题目链接 给一个图, n个点m条边, 求至少去掉多少个点可以使得图不再联通.随便指定一个点为源点, 枚举其他点为汇点的情况, 跑网络流, 求其中最小的情况. 如果最后ans为inf, 说明是一个完全图 ...
- POJ 1966 Cable TV Network(顶点连通度的求解)
Cable TV Network Time Limit: 1000MS Memory Limit: 30000K Total Submissi ...
- POJ 1966 Cable TV NETWORK(网络流-最小点割集)
Cable TV NETWORK The interconnection of the relays in a cable TV net ...
- POJ 1966 Cable TV Network
Cable TV Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4702 Accepted: 2173 ...
- UVA1660 电视网络 Cable TV Network
题目地址:UVA1660 电视网络 Cable TV Network 枚举两个不直接连通的点 \(S\) 和 \(T\) ,求在剩余的 \(n-2\) 个节点中最少去掉多少个可以使 \(S\) 和 \ ...
- POJ 1966 ZOJ 2182 Cable TV Network
无向图顶点连通度的求解,即最少删除多少个点使无向图不连通. 我校“荣誉”出品的<图论算法理论.实现及其应用>这本书上写的有错误,请不要看了,正确的是这样的: 对于每个顶点,分成两个点,v和 ...
- 求割点模板(可求出割点数目及每个割点分割几个区域)POJ1966(Cable TV Network)
题目链接:传送门 题目大意:给你一副无向图,求解图的顶点连通度 题目思路:模板(图论算法理论,实现及应用 P396) Menger定理:无向图G的顶点连通度k(G)和顶点间最大独立轨数目之间存在如下关 ...
- UVA 1660 Cable TV Network 电视网络(无向图,点连通度,最大流)
题意:给一个无向图,求其点连通度?(注意输入问题) 思路: 如果只有1个点,那么输出“1”: 如果有0条边,那么输出“0”: 其他情况:用最大流解决.下面讲如何建图: 图的连通度问题是指:在图中删去部 ...
- ZOJ 2182 Cable TV Network(无向图点割-最大流)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2182 题意:给出一个无向图,问最少删掉多少个顶点之后图变得不连通 ...
随机推荐
- Linux下使用bcwipe擦除磁盘空间
Linux下使用bcwipe擦除磁盘空间 2 Replies 如果要彻底删除硬盘上的文件,Windows下有磁盘粉碎机,bcwipe等. Linux下,也有bcwipe,而且功能更强大. 擦除磁盘剩余 ...
- GCC参数详解-(转自:篱笆博客)
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言, ...
- 8.12-14 df 、mkswap、swapon、swapoff、sync
8.12 df:报告文件系统磁盘空间的使用情况 -a 显示所有文件系统 -h 以容易理解的格式显示磁盘的使用情况端 -i 显示文件系统的inode信息迷 -t 显示指定类型 ...
- C++ STL 里为什么不维护一个 size 成员变量?
回答: 为什么 GCC 里要把 list::size() 的复杂度搞成 O(N)? 一通搜索后终于看到有这样的讨论:关于 list::splice() 函数. list 是链表结构,它的优势就在于可以 ...
- mysql的日志文件及其作用
MySQL中有七种日志文件,分别是: 重做日志(redo log) 回滚日志(undo log) 二进制日志(binlog) 中继日志(relay log) 错误日志(errorlog) 慢查询日志( ...
- 从实例分析ELF格式的.gnu.hash区与glibc的符号查找
前言 ELF格式的.gnu.hash节在设计上比较复杂,直接从glibc源码进行分析的难度也比较大.今天静下心来看了这篇精彩的文章,终于将布隆滤波器.算数运算转为位运算等一系列细节搞懂了(值得一提的是 ...
- MYSQL导入/迁移后事件不执行
mysql迁移后事件不执行 查看数据库是否开启事件支持 mysql> show variables like 'event_scheduler'; +-----------------+---- ...
- Selenium3自动化测试【18】XPath定位元素(2)
层级与属性结合定位 如果被定为的元素,无法通过自身属性来唯一标识自己,此时可以考虑借助上级元素来定位自己.举生活中的例子,一个婴儿刚出生,还没有姓名与身份证号,此时给婴儿进行检查时往往会标注为&quo ...
- 为鸿蒙OS说两句公道话(我对鸿蒙OS的一些看法)
为鸿蒙说两句公道话 今天看了鸿蒙系统的评测,看完后我感觉很欣慰,为什么这么说 ? 不是很多人吐槽鸿蒙是 Android 套壳吗 ?或者叫鸿蒙 UI 吗?说鸿蒙没有自己的核心技术.看了鸿蒙系统的设计,底 ...
- SQL Server 将两行或者多行拼接成一行数据
一个朋友,碰到一个问题. 就是查询出来的结果集,需要每隔三行.就将这三行数据以此拼接为一行显示.起初我想着用ROW_NUMBER加CASE WHEN去做,发现结果并非我预期那样. 结果如下: 由于别人 ...