POJ1966 Cable TV Network】的更多相关文章

原题链接 割去点使得无向图不连通,和最小割相似. 我们可以将点转化成边,这样就能跑最小割了. 枚举每两个不能直接到达的点\(S,T\),使得删去一些点(除去这两个点)使得这两个点不连通(若两点能直接到达显然无解),然后我们按下面的方法建立新图: 将每个点\(x\),拆成两个点\(x_1,x_2\),对\(\forall x\ne S,x\ne T\),由\(x_1\)向\(x_2\)连一条容量为\(1\)的边. 对于原来图中每条边\((x,y)\),连接\((x_2,y_1)\)和\((y_2,…
题目链接:传送门 题目大意:给你一副无向图,求解图的顶点连通度 题目思路:模板(图论算法理论,实现及应用 P396) Menger定理:无向图G的顶点连通度k(G)和顶点间最大独立轨数目之间存在如下关系: 1.若G是完全图,k(G)=|V(G)|-1 2.若G不是完全图,k(G)=min{P(A,B)}  其中A,B不直接相连 #include <iostream> #include <cstdio> #include <cstdlib> #include <cm…
Cable TV Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4702   Accepted: 2173 Description The interconnection of the relays in a cable TV network is bi-directional. The network is connected if there is at least one interconnecti…
                           Cable TV Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4678   Accepted: 2163 Description The interconnection of the relays in a cable TV network is bi-directional. The network is connected if there is…
题目地址:UVA1660 电视网络 Cable TV Network 枚举两个不直接连通的点 \(S\) 和 \(T\) ,求在剩余的 \(n-2\) 个节点中最少去掉多少个可以使 \(S\) 和 \(T\) 不连通,在每次枚举的结构中取 \(min\) 就是本题的答案. 点边转化 把原来无向图中的每个点 \(x\) ,拆成入点 \(x\) 和出点 \(x'\) .在无向图中删去一个点⇔在网络中断开 \((x,x')\) .对 \(\forall x \neq S,x \neq T\) 连有向边…
                                Cable TV NETWORK The interconnection of the relays in a cable TV network is bi-directional. The network is connected if there is at least one interconnection path between each pair of relays present in the network. Oth…
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…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2182 题意:给出一个无向图,问最少删掉多少个顶点之后图变得不连通? 思路:将原图每个点拆点(i,i+n),连边<i,i+n,1>,对原图的边(u,v),连边<u+n,v,INF>,<v+n,u,INF>.然后对于每对顶点(i,j)跑最大流(i+n,j).所有最大流的最小值即为答案. struct node { int v,cap,nex…
[题意]给出一个由n个点,m条边组成的无向图.求最少去掉多少点才能使得图中存在两点,它们之间不连通. [思路]回想一下s->t的最小点割,就是去掉多少个点能使得s.t不连通.那么求点连通度就枚举源点.汇点,然后取其中最小点割的最小值就好了.注意如果最大流大于节点数,则应该把它修改为节点数. [代码] #include #include #include #include #include #include #define MID(x,y) ((x+y)/2) #define mem(a,b) m…
题意:给一个无向图,求其点连通度?(注意输入问题) 思路: 如果只有1个点,那么输出“1”: 如果有0条边,那么输出“0”: 其他情况:用最大流解决.下面讲如何建图: 图的连通度问题是指:在图中删去部分元素(点或边),使得图中指定的两个点s和t不连通(即不存在从s到t的路径),求至少要删去几个元素. 图的连通度分为点连通度和边连通度: (1)点连通度:只许删点,求至少要删掉几个点(当然,s和t不能删去,这里保证原图中至少有三个点): (2)边连通度:只许删边,求至少要删掉几条边. 并且,有向图和…
题意: 求一个无向图的点连通度. 分析: 把一个点拆成一个入点和一个出点,之间连一条容量为1的有向边,表示能被用一次.最大流求最小割即可.套模板就好 代码; #include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <queue>using namespace std;const int maxn=110;#define INF 1<…
题目链接 给一个图, n个点m条边, 求至少去掉多少个点可以使得图不再联通.随便指定一个点为源点, 枚举其他点为汇点的情况, 跑网络流, 求其中最小的情况. 如果最后ans为inf, 说明是一个完全图, 那么结果就为n. #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath…
无向图顶点连通度的求解,即最少删除多少个点使无向图不连通. 我校“荣誉”出品的<图论算法理论.实现及其应用>这本书上写的有错误,请不要看了,正确的是这样的: 对于每个顶点,分成两个点,v和v’: 对于每个顶点,v到v’建边,容量为1: 对于无向边(u,v),建边<u’,v>和<v’,u>容量为+∞: 然后枚举每一对没有边直接相连的点对(x,y),x’为源点,y为汇点,跑最大流.最大流的最小值即为答案. #include<cstdio> #include<…
<题目链接> 题目大意: 给定一个无向图,求点连通度,即最少去掉多少个点使得图不连通. 解题分析: 解决点连通度和边连通度的一类方法总结见   >>> 本题是求点连通度,所以对每个点进行拆点,然后入点向出点连一条容量为1的边,其它边则是用一个容量为INF的边来代替.然后就是枚举一下源点和汇点,跑最大流,选最小的值即可.不过,本题需要注意一下是否为完全图,因为完全图的最大流是INF,所以特判一下,如果是完全图,就将点全部删除,输出n. #include <cstdio&g…
题目大意:给定一个 N 个点的无向图,求至少删去多少个点可以使得无向图不连通. 题解:学习到了点边转化思想. 根据网络流的知识可知,一个网络的最小割与网络的最大流相等.不过最小割是图的边集,而本题则是删去节点.考虑将一个节点拆分成两个节点,即:入点和出点,对于同一个节点,在入点和出点之间的边权为 1,其他无向边之间转化成出点和入点之间的连接,边权设为 inf,表示不能割断边.最后,枚举图中任意两点,计算最大流的最小值即可. 注意:网络流建图一定要记得加上反向边...QAQ 代码如下 #inclu…
拆点+网络流 拆点建图应该是很常见的套路了..一张无向图不联通,那么肯定有两个点不联通,但是我们不知道这两个点是什么. 所以我们枚举所有点,并把每个点拆成入点和出点,每次把枚举的两个点的入点作为s和t(这样方便,当然也可以把第一个点的出点当成s,第二个点的入点当成t,但其实我们把s和t的入点和出点之间的边容量设为INF之后就没有影响了) 每条原图的边连接着u的出点和v的入点,v的出点和u的入点,容量设为INF,保证不给割,其他点的入点和出点之间的容量当然是1.这样我们的割就一定会割在容量为1的边…
Description n个点的无向图,问最少删掉几个点,使得图不连通 n<=50 m也许可以到完全图? Solution 最少,割点,不连通,可以想到最小割. 发现,图不连通,必然存在两个点不连通. 枚举源点汇点,要让源点汇点不连通.源点汇点不能割掉 网络建图: 为了割的是边,所以要点转化成边. 对于每个x,建立x'=x+n,对于不是S.T的点(因为S.T不能割掉),x向x’连一条边权为1的边 对于原图的边e(x,y) x’->y 连接inf的边,y'->x连接inf的边. 边权保证割…
题目大意:给一张n个点.m条边的无向图,求最小点割集的基数. 题目分析:求无向图最小点割集的基数可以变成求最小割.考虑单源s单汇t的无向图,如果要求一个最小点集,使得去掉这个点集后图不再连通(连通分量数目增多),只需将每个点拆成两个(入点和出点),并且之间连一条容量为1的弧,其他弧不变,在新网络上求最小割便得到这个最小点集的基数.但是本题无源无汇,可以指定一个点作为源点,枚举其它的点作为汇点,求得n-1个点集基数,取最小的便是答案.要注意每次枚举都要重新建图. 代码如下: # include<i…
题意:求一个无向图的点连通度.点联通度是指,一张图最少删掉几个点使该图不连通:若本身是非连通图,则点连通度为0. 分析:无向图的点连通度可以转化为最大流解决.方法是:1.任意选择一个点作为源点:2.枚举所有与该点间没有边的点作为汇点:3.将每个点拆为入点和出点,入点到出点建一条流量为1的边:4.原本有边关系的两点,建流量为正无穷的双向边:5.每次跑出最大流,其中最小值即点连通度,若最小值为正无穷,则说明点连通度为|顶点数|. #include<iostream> #include<cst…
题意:求点联通度 首先看了别人的题解还是不晓得只枚举汇点的原因觉得行不通 关于求点联通度的建图方法 转自http://hi.baidu.com/lerroy312/item/5a5f36f2f5bba61bcf9f322e 点连通度的定义:一个具有N个点的图G中,在去掉任意k-1个顶点后(1<=k<=N),所得的子图仍然连通,去掉K个顶点后不连通,则称G是K连通图,K称作图G的连通度,记作K(G). 独立轨:A,B是图G(有向无向均可)的两个顶点,我们称为从A到B的两两无公共内顶的轨为独立轨,…
题意:求一个无向图的点连通度. 析:把每个点拆成两个,然后中间连接一个容量为1的边,然后固定一个源点,枚举每个汇点,最小割. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream>…
题意:求一个无向图的点连通度. 把一个点拆成一个入点和一个出点,之间连一条容量为1的有向边,表示能被用一次.最大流求最小割即可. 一些细节的东西:1.源点固定,汇点要枚举一遍,因为最小割割断以后会形成连通分量,在分割以后那个连通分量里的割会更大. 2.每次枚举重建一下图.3.从入点进,出点出,才认为是经过了一个原来的点,那么源点和汇点是不必经过的,所以一个在出点,另外一个枚举入点. #include<bits/stdc++.h> using namespace std; ; struct Ed…
点连通度:最少删除几个点使图不连通 拆点就变成了最小割 注意编号.画图就知道u’连v,v’连u. 技巧:不需要枚举S,T.固定S,枚举T即可 这种输入很烦, scanf(" (%d,%d)", &u, &v); Scanf中添加 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符. 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符. 学到了 #include <cstdio> #inc…
http://poj.org/problem?id=1966 题意:给出一个由n个点,m条边组成的无向图.求最少去掉多少点才能使得图中存在两点,它们之间不连通. 思路:将点i拆成a和b,连一条a->b的容量为1的边,代表这个点只能走一次,然后如果点i和点j有边相连,那么将bi和aj相连,bj和ai相连,容量为INF,代表这条边可以走INF次. 然后O(n^2)枚举源点和汇点跑最大流,算的最小的最大流就是答案.(这个时候的最大流代表的是S跑到T需要经过多少路径(最小割),如果得到的最大流是INF,…
题意翻译 题目大意: 给定一个n(n <= 50)个点的无向图,求它的点联通度.即最少删除多少个点,使得图不连通. 解析 网络瘤拆点最小割. 定理 最大流\(=\)最小割 感性地理解(口胡)一下:首先显然最大流\(<=\)割,而根据最大流定义,最小割恰恰就是要恰好割断最大流经过的所有最窄流量的边集,就能恰好使得源点和汇点不连通,即最大流\(=\)最小割. 至于具体的证明,我也不知道. 拆点 一般来说,正常的拆点有两个作用: 在不改变原图连通性的情况下,将点权转化为边权. 通过化点为边,限制通过…
$ POJ~1966~Cable~TV~Network $ $ solution: $ 第一眼可能让人很难下手,但本就是冲着网络流来的,所以我们直接一点.这道题我们要让这个联通图断开,那么势必会有两个点变得不连通,这道题的数据范围很小,所以我们试着暴力枚举两个点.这样就变成了最小割.不过,嗯?割的东西怎么是点? 为了靠近我们已经学得知识,我们想办法看,能不能割点变成割边.反正网络流最喜欢千变万化.左右建模了...于是我们引进书上的一个东西: 一个节点可以拆成两个节点,将原节点用中间那条边表示 一…
Cable TV Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4404 Accepted: 2047 Description The interconnection of the relays in a cable TV network is bi-directional. The network is connected if there is at least one interconnection p…
题目请戳这里 邻接表的ISAP被卡了一天...TLE....终于被卡了...好忧桑啊啊啊... 题目大意:给一张无向图,求最少去掉几个点使图不连通. 题目分析:求无向图的点连通度,拆点建图跑最大流.具体做法是:将一个点i拆成2个点:i和i+n,分别表示从第i个点出去和进入第i个点.那么i+n->i建边,边权1,对于每一条边(a,b),建边a->b + n,b->a+n,边权无穷.然后枚举没有边直接相连的点对(a,b),以a为源点,b+n为汇点跑最大流,最大流量就是该图的一个割,枚举所有不…
题目:http://poj.org/problem?id=1966 把一个点拆成入点和出点,之间连一条边权为1的边,跑最大流即最小割: 原始的边权赋成inf防割: 枚举源点和汇点,直接相邻的两个点不必枚举: 注意:1.源点为枚举点i的出点,汇点为枚举点j的入点: 2.读入方式,免空格: 3.在dinic跑最大流的过程中,会改变边权,因此每次枚举都要复制一组边跑最大流,以免影响后面: 另:数据中的点从0开始,所以读入的时候++来使用. 代码如下: #include<iostream> #incl…
链接:http://poj.org/problem?id=1966 题意:一个无向图,n个点,m条边,求此图的顶点连通度. 思路:顶点连通度,即最小割点集里的割点数目.一般求无向图顶点连通度的方法是转化为网络流的最小割. 建图: (1)原图每一个点i拆点,拆为i'和i'',i'到i''连一条弧容量为1. (2)对于原图中存在的边(u, v),连两条弧(u', v')和(v'', u'),容量INF. (3)找一个源点i.这个点不能和其它全部点都相邻否则无法找到最小割,以这个点i''为源点,枚举汇…