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 顶点连通度 (最大流算法)的更多相关文章

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

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

  2. POJ 1966 Cable TV Network(顶点连通度的求解)

                               Cable TV Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissi ...

  3. POJ 1966 Cable TV NETWORK(网络流-最小点割集)

                                    Cable TV NETWORK The interconnection of the relays in a cable TV net ...

  4. POJ 1966 Cable TV Network

    Cable TV Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4702   Accepted: 2173 ...

  5. UVA1660 电视网络 Cable TV Network

    题目地址:UVA1660 电视网络 Cable TV Network 枚举两个不直接连通的点 \(S\) 和 \(T\) ,求在剩余的 \(n-2\) 个节点中最少去掉多少个可以使 \(S\) 和 \ ...

  6. POJ 1966 ZOJ 2182 Cable TV Network

    无向图顶点连通度的求解,即最少删除多少个点使无向图不连通. 我校“荣誉”出品的<图论算法理论.实现及其应用>这本书上写的有错误,请不要看了,正确的是这样的: 对于每个顶点,分成两个点,v和 ...

  7. 求割点模板(可求出割点数目及每个割点分割几个区域)POJ1966(Cable TV Network)

    题目链接:传送门 题目大意:给你一副无向图,求解图的顶点连通度 题目思路:模板(图论算法理论,实现及应用 P396) Menger定理:无向图G的顶点连通度k(G)和顶点间最大独立轨数目之间存在如下关 ...

  8. UVA 1660 Cable TV Network 电视网络(无向图,点连通度,最大流)

    题意:给一个无向图,求其点连通度?(注意输入问题) 思路: 如果只有1个点,那么输出“1”: 如果有0条边,那么输出“0”: 其他情况:用最大流解决.下面讲如何建图: 图的连通度问题是指:在图中删去部 ...

  9. ZOJ 2182 Cable TV Network(无向图点割-最大流)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2182 题意:给出一个无向图,问最少删掉多少个顶点之后图变得不连通 ...

随机推荐

  1. 二进制部署K8S-3核心插件部署

    二进制部署K8S-3核心插件部署 5.1. CNI网络插件 kubernetes设计了网络模型,但是pod之间通信的具体实现交给了CNI往插件.常用的CNI网络插件有:Flannel .Calico. ...

  2. du -cs /var/lib/BackupPC/pc/10.1.60.211/目录名

    # du -cs /var/lib/BackupPC/pc/10.1.60.211/7870236 /var/lib/BackupPC/pc/10.1.60.211/7870236 总用量  

  3. 10.27-Redis-mz 深入浅出Redis

    深入浅出Redis 1.Redis的发展史     Redis[Remote Directory Server]:远程服务器字典 2.下载安装Redis 1>Linux下安装Reids     ...

  4. shell基础之99乘法表

    方法一: 1 #!/bin/bash 2 for a in {1..9};do 3 for b in {1..9};do 4 c=`echo "$a*$b" |bc` 5 if [ ...

  5. 8.4 parted:磁盘分区工具

    parted     对于小于2TB的磁盘可以用fdisk和parted命令进行分区,这种情况一般采用flisk命令,但对于大于2TB的磁盘则只能用parted分区,且需要将磁盘转换为GPT格式. p ...

  6. 『动善时』JMeter基础 — 24、JMeter中使用“用户参数”实现参数化

    目录 1.用户参数组件介绍 2.用户参数界面介绍 3.使用"用户参数"组件实现参数化 (1)测试计划内包含的元件 (2)线程组元件内容 (3)HTTP请求组件内容 (4)用户参数组 ...

  7. 1、大数据 Hadoop配置和单机Hadoop系统配置

    #查看服务器ip ip add #设置主机名称 hostnamectl set-hostname master bash #查看 hostname #绑定ip vi /etc/hosts 添加 服务器 ...

  8. 信息学C++教程<-3->输入输出格式控制

    二进制输出整数 在计算机系统内的数据本身就是二进制 思考:在C++中,如何通过cout函数来输出二进制的数字呢? 所需库文件:1.iomanip //管理C++格式控制 ​ 2.bitset //二进 ...

  9. SystemVerilog数组(一)

  10. node.js学习(1)全局对象

    1 计时器 1)三秒后执行 2) 每隔2秒执行一次 3)清除计时器 2 全局对象 1)当前文件所在目录 2)当前文件路径