poj3177】的更多相关文章

题意: 给一张无向图,求加多少边使原图任意两点边双联通. SOL: 一个不会写边双点双强联通的傻逼. 一个结论:把一棵树变成满足条件的图需要加的边使入度为1的点数+1除以2.------>就是树的叶子两两连上. 然后就是缩点然后统计就好了... 然后学会了怎么搞边双...看了几天白书还是非常显然的感觉... Code: /*========================================================================== # Last modif…
http://poj.org/problem?id=3177 (题目链接) 题意 给出一个n个节点m条边的无向图,求最少连几条边使图中没有桥. Solution 我们可以发现,用最少的边使得图中没有桥,那么就是将图缩点得到树,求使每个叶子节点相连所需要的最少边数,即 (叶子节点个数+1)/2 . Tarjan求出图中的桥,以及并查集记录下每个节点属于哪个双连通分量,只与一座桥相连的点即为叶子节点,统计答案即可. 听说会有重边,不过对我的程序好像并没有什么影响. 细节 这道题如果是求双联通分量然后…
题目: 原本没有记录桥是谁,而是染色时即时判断的.后来发现不行,因为a去b可能满足low[b]>dfn[a],但b去a就不满足了. 这是因为low和dfn的关系是相对的,仅限于tarjan时的那棵dfs搜索树中.染色时没有按那棵树走,就不能用dfn和low了! 累加ans时可以把边+=2,很方便. 别忘了写v=edge[i].to. #include<iostream> #include<cstdio> #include<cstring> using namesp…
Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12676   Accepted: 5368 Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the…
在看了春晚小彩旗的E技能(旋转)后就一直在lol……额抽点时间撸一题吧…… Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8159   Accepted: 3541 Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to anot…
题目大概是给一个无向连通图,问最少加几条边,使图的任意两点都至少有两条边不重复路径. 如果一个图是边双连通图,即不存在割边,那么任何两个点都满足至少有两条边不重复路径,因为假设有重复边那这条边一定就是割边,与不存在割边矛盾. 这题的解法是:原图的边双连通分量是符合要求的可以看作一点,即把原图的边双连通分量缩点,这样形成一个无向无环图,可以看作树,那么问题就变成给一棵树添最少边使其形成边双连通图. 而要添的最少的边的结论是:(树的叶子数+1)/2.构造大概就是给树的两对两对叶子添边. 具体的实现,…
题目链接:http://poj.org/problem?id=3177 和上一题一样,只是有重边. 如何解决重边的问题? 1.  构造图G时把重边也考虑进来,然后在划分边双连通分量时先把桥删去,再划分,其中桥的一端的割点归入当前正在划分的边双连通分量.这个处理比较麻烦: 2.  在输入图G的边时,若出现重边,则不把重边放入图G,然后在划分边双连通分量时依然用Low划分. /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ mind! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃…
边双连通有一个非常简单的做法就是先找出所有桥,然后再dfs一次不走桥即可答案是(叶子节点的个数+1)/2 type node=record next,po:longint; end; ..] of node; p,dfn,low,d,be,fa:..] of longint; hash:..,..] of boolean; b:..] of boolean; len,n,m,x,y,i,ans,t,s,j,h,r:longint; function min(a,b:longint):longin…
Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the herd are forced to cross near the Tree of Rotten Apples. The cows are now tired of often being forc…
传送门:Redundant Paths 题意:有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新建多少条路,使得任何两个牧场之间至少有两条独立的路.两条独立的路是指:没有公共边的路,但可以经过同一个中间顶点. 分析:在同一个边双连通分量中,任意两点都有至少两条独立路可达,因此同一个边双连通分量里的所有点可以看做同一个点. 缩点后,新图是一棵树,树的边就是原无向图的桥. 现在问题转化为:在树中至少添加多少条边能使图变为双连通图. 结论:添加…
Redundant Paths Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the herd are forced to cross near the Tree of Rotten Apples. The cows are now tired of…
题意:给你n个点,m条边的无向联通图,问你最少增加几条边,使得这个图每对点至少有两条路径 解题思路:考虑每个环内的点必定有>=2条路径,所以先把这个无向图中的环去掉,用并查集缩环,然后剩下的图一定是个割边树,只需要把度为1的结点数/2就是答案了(把这棵树变成环): 代码: #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace s…
题意: 有F个牧场,1<=F<=5000,现在一个牧群经常需要从一个牧场迁移到另一个牧场.奶牛们已经厌烦老是走同一条路,所以有必要再新修几条路,这样它们从一个牧场迁移到另一个牧场时总是可以选择至少两条独立的路.现在F个牧场的任何两个牧场之间已经至少有一条路了,奶牛们需要至少有两条.给定现有的R条直接连接两个牧场的路,F-1<=R<=10000,计算至少需要新修多少条直接连接两个牧场的路,使得任何两个牧场之间至少有两条独立的路.两条独立的路是指没有公共边的路,但可以经过同一个中间顶点…
题目链接:传送门 思路: 题目要将使每一对草场之间都有至少两条相互分离的路径,所以转化为(一个有桥的连通图至少加几条边才能变为双联通图?) 先求出所有的桥的个数,同时将不同区块收缩成一个点(利用并查集),之后一个图变为了一颗树: 然后在统计树中度数为1的点的个数,记为cnt,则至少添加(cnt+1)/2条边. #include<iostream> #include<cstdio> #include<cstring> #include<vector> usin…
题意:有n个点,m条路,问你最少加几条边,让整个图变成边双连通分量. 思路:缩点后变成一颗树,最少加边 = (度为1的点 + 1)/ 2.3177有重边,如果出现重边,用并查集合并两个端点所在的缩点后的点. 代码: */ #include<set> #include<map> #include<stack> #include<cmath> #include<queue> #include<vector> #include<cst…
LINK 题目大意 给你一个有重边的无向图图,问你最少连接多少条边可以使得整个图双联通 思路 就是个边双的模板 注意判重边的时候只对父亲节点需要考虑 你就dfs的时候记录一下出现了多少条连向父亲的边就可以了 然后和有向图不一样的是,在这里非树边的更新不用判断点是不是在栈内,因为无向图中没有u可以到达v但是v不能到达u的情况 //Author: dream_maker #include<iostream> #include<cstdio> #include<cstring>…
http://poj.org/problem?id=3177 明显要求桥的一道题. (因为有桥就说明只能从那一条路走,换句话说就是只有一种方法) 求完桥后按照结论(加几条边成双连通图的结论,不会请baidu)就可以输出ans啦! (为此学了一下新的桥的求法……原来的那个常数太大了) #include<stack> #include<cstdio> #include<cstring> #include<iostream> #include<algorit…
Description: 有F个牧场,1<=F<=5000,现在一个牧群经常需要从一个牧场迁移到另一个牧场.奶牛们已经厌烦老是走同一条路,所以有必要再新修几条路,这样它们从一个牧场迁移到另一个牧场时总是可以选择至少两条独立的路.现在F个牧场的任何两个牧场之间已经至少有一条路了,奶牛们需要至少有两条.给定现有的R条直接连接两个牧场的路,F-1<=R<=10000,计算至少需要新修多少条直接连接两个牧场的路,使得任何两个牧场之间至少有两条独立的路.两条独立的路是指没有公共边的路,但可以…
Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19316   Accepted: 8003 题目链接:http://poj.org/problem?id=3177 Description: In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to anot…
给一个无向图,问至少加入多少条边能够使图变成双连通图(随意两点之间至少有两条不同的路(边不同)). 图中的双连通分量不用管,所以缩点之后建新的无向无环图. 这样,题目问题等效于,把新图中度数为1的点相互连到图里面形成环 如果这种点有sum个,那么至少须要加入(sum+1)/2 条边. 下面,基本上就是求边双连通分量模板. #include <iostream> #include <cstring> #include <string> #include <cstdi…
Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18580   Accepted: 7711 Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the…
题意和poj3352一样..唯一区别就是有重边,预先判断一下就好了 #include<map> #include<set> #include<list> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cstring> #include<iostream>…
题目:http://poj.org/problem?id=3177 找桥,缩点,总之都是板子: 对于每个叶子,互相连一条边即可:若最后剩下一个,则去和根节点连边: 所以叶子节点数+1再/2即答案. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ,head[],reg[],c[],dc,dfn[],low[],tim,ans; ]; struct N{ in…
Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11514   Accepted: 4946 Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the…
俩个题一样.tarjan算法应用,开始求桥,WA,同一个边双连通分量中low值未必都相同,不能用此来缩点.后来用并查集来判断,若不是桥,则在一个双连通分量中,并之,后边再查,将同一个双连通分量中的点通过并查集收缩为一个并查集的"祖宗点",间接完成缩点! 缩点成树后,(leaves+1)/2就不用说了.... #include<iostream> //0MS #include<vector> #include<cstring> #include<…
题目链接:http://poj.org/problem?id=3177 Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15852   Accepted: 6649 Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to anoth…
题目大意:问一个图至少加多少边能使该图的边双连通分量成为它本身. 图的边双连通分量为极大的不存在割边的子图.图的边双连通分量之间由割边连接.求法如下: 求出图的割边 在每个边双连通分量内Dfs,标记每个节点所属于的双连通分量编号 构建一新图Tree,一个节点代表一个双连通分量.原图中遍历割边,将割边连接的两个双连通分量在Tree中的对应节点连接. Tree中算出每个节点的度数,如果一节点度数为1,则其为叶子节点.输出(叶子节点数+1/2).(连接了叶子节点,就形成了环,Tree中不连接叶子节点的…
Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15752   Accepted: 6609 Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the…
Road Construction Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11215 Accepted: 5575 Description It's almost summer time, and that means that it's almost summer construction time! This year, the good people who are in charge of the roads…
转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 最近AC题:2528   更新时间:2011.09.22  已AC题数:146 初级题已在2011.06.30全部完成 部分解题报告添加新内容,除了原有的“大致题意”和“解题思路”外, 新增“Source修正”,因为原Source较模糊,这是为了帮助某些狂WA的同学找到测试数据库,但是我不希望大家利用测试数据打表刷题 PS:部分题目的评论中也有给出了测试数…