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--elasticsearch
ELK stack: Lucene: 文档:document 包含了一个或多个域的容器 field:value 域: 有很多选项 索引选项,存储选项,域向量使用选项 索引选项用于通过倒排索引来控制文本 ...
- 006.Ansible自定义变量
ansible支持变量,用于存储会在整个项目中重复使用到的一些值.以简化项目的创建与维护,降低出错的机率. 变量的定义: 变量名应该由字母.数字下划数组成 变量名必须以字母开头 ansible内置关键 ...
- 源码安装Apache(httpd)
[RHEL8] !!!测试环境我们首关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# sys ...
- nginx的四层转发功能
架构图 配置过程 配置web服务器 # 1.配置web01,更改配置文件 [root@web01 /etc/nginx/conf.d]# vi test1.conf server { listen 8 ...
- 重新整理 .net core 实践篇————依赖注入应用之生命法则[三]
前言 该章演示依赖注入中,对象的释放行为. 紧接上文表示,演示: services.AddSingleton<IMySingletonService, MySingletonService> ...
- Python for循环 - Python零基础入门教程
目录 一.for 循环语法 二.for 循环实战 三.重点总结 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 Python ...
- [leetcode] 212. 单词搜索 II(Java)
212. 单词搜索 II 这leetcode的评判机绝对有问题!!同样的代码提交,有时却超时!害得我至少浪费两个小时来寻找更优的答案= =,其实第一次写完的代码就可以过了,靠!!!第207位做出来的 ...
- Python+Selenium - iframe定位
元素在iframe中.在html当中,内嵌了另一个html (iframe) 分辨元素是否在iframe当中 在代码当中,从当前的html切换到iframe当中的html,然后在元素定位 切换方式:d ...
- THINKPHP_(5)_THINKPHP6接收ajax下拉菜单提交的数据,存在的bug
反思: 国产总是不尽人意,但是要支持国产. ThinkPHP的6接收ajax的post数据,存在一个bug.即ajax传递的json数据,在thinkphp后端解析出来后,并非直接的json格式. 描 ...
- 超轻量AI引擎MindSpore Lite
超轻量AI引擎MindSpore Lite 揭秘一下端上的AI引擎:MindSpore Lite. MindSpore Lite是MindSpore全场景AI框架的端侧引擎,目前MindSpore L ...