上一页 1 2 3 4 5 6 7 8 9 ··· 32 下一页
摘要: 双连通分量题意:给一个无向图。如果至少有两个环共用了一些边,那么这些边被认为是“冲突边”。如果一些边不在任何一个环中,这些边被认为是“多余边”。你要找出这个图中有多少“多余边”和“冲突边”然后输出条数。另外这图不一定是连通的1.“多余边”不在任何一个环中,那么多余边一定是桥,所以统计这个无向图中有多少桥即可2.“冲突边”有多少,这个有点费劲,但是不难想到。如果一个环比较特殊,n个点刚好n条边,例如(1,2)(2,3)(1,3)这种环,这个环内,一条“冲突边”都没有,但是如果一个环内的边数大于点数,那么这个环内所有边都是“冲突边”(真可惜,因为有多出来的那些边后,相当于把最外面的大环分割成了内部 阅读全文
posted @ 2013-05-19 23:25 Titanium 阅读(1121) 评论(0) 推荐(1) 编辑
摘要: 双连通分量边双连通分量+DP (其实不用DP,直接建树+遍历一次就能计算出全部的DP值)题意无向图连通,所以只要从一个点运行一次dfs即可,在运行dfs过程中保存下所有的桥并且计算出所有的边双连通分量。在tarjan之后对原图进行缩点,缩点后就能得到一棵,树边刚好就是全部的桥。缩点后每个大点都有一个权值,权值等于 = 属于该连通分量的每个小点的权值和。因此保存下全部桥是为了方便建树。建树之后对树进行一次遍历(很多人说是DP,其实不算是DP,只是简单的遍历而已)。遍历过程要计算每个节点的dp值,dp[i] = 以点i为节点的子树的所有节点的权值和因此每计算完一个节点的dp值后,就可以看看切断这条 阅读全文
posted @ 2013-05-19 17:32 Titanium 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 双连通分量题意:给一个无向图,问要添加多少条边形成边双连通分量。注意图一开始是连通的,所以只要从一个点开始dfs一次就行了,另外这图有重边,(1,2)(2,1)这样,则1,2就形成了一个边双连通分量。之前写的求边双连通分量的代码不能处理重边,但是要修改过来其实挺简单的。重边无非是遇到一个问题,从u走到v,按一般的做法,是不能从v回到u的,即不能马上就回到它父亲节点去(其实指的是不能重复走这条边,这条边虽然是无向边但是只能走一次),但是有了重边后,是可以马上回到它父亲处的,只不过走的是另一条边。所以我们可以标记哪些边用过了,每条边只能用一次,用过一次后不能再用。而且别忘了,建图的时候,无向边是分 阅读全文
posted @ 2013-05-19 17:25 Titanium 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 双连通分量题意:一个无向图要添加多少条边才能使其变为边双连通分量,和 poj 3352 Road Construction 几乎一样的题目,不同的是,poj这题,原图是保证连通的,这题是不连通的,过程完全一样,只是最后计算答案的公式不同.所以题目分析就不写了,直接看poj那题吧,其实这题也是模板题,懂双连通分量的知识的话,并不需要看分析poj那题,缩点后不会出现孤立点,因为整个图连通的,所以只要找到缩点后的叶子个数就可以了,所以是(leaf+1)/2对于这题,因为图不连通,可能出现缩点后的孤立点。首先看缩点后的图,可能是一块一块的,对于点数超过1的块,和poj那题是一样的,只要找到叶子,所以没 阅读全文
posted @ 2013-05-18 23:04 Titanium 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 推荐技术公众号:不爱睡觉的大猪 双连通分量 题意:比较裸的题意,就是给一个无向图,问添加多少条边后能使整个图变成双连通分量 分析:建议先学了双连通分量的相关知识,因为这题是算是个模板题(我自己写了模板,过了这题,但是还没有充分测试),如果没学好相关知识即便这个模板题也不好懂 双连通分量分为【点双连通 阅读全文
posted @ 2013-05-18 19:41 Titanium 阅读(1918) 评论(6) 推荐(1) 编辑
摘要: 线段树 + DP题意:一个游戏(做题前可以先玩一下帮助理解)。题意比游戏简易:每个木板都有一个权值,可正可负或0,人在上面,自身能量要加上这个权值(即能量会发生增减)。人一开始有100能量,站在最高的木板上(要加上这个能量的权,所以其实起始能量应该为100+该板能量)。然后人往下跳,跳法有讲究并不像真实游戏那样可以移动,人下落,只能从一块木板的端点垂直下落,中途不能移动,这和实际游戏有区别,但是也使问题简化了。问这个人怎么跳,使在它落到地面的时候,能量最大,如果中途或者到地面能量<=0,或者跳到一个木板上,下面没有木板可以接住自己了,那么游戏结束,输出-1分析:既然只能垂直下落,而且是落 阅读全文
posted @ 2013-05-11 21:15 Titanium 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 继续复习二分图题意:比较裸的二分图,输入n,表示n个不同的课程,下面n行,每行首先是m,表示后面跟着m对信息,每对信息为(p,q),表示在星期p的第q节上这节课,(一周7天,一天12节课)。问你怎么匹配,可以让这个人一周上最多的课。建立二分图,X为时间,[0,83],Y为课程,[0,n-1],然后有向边Y--->X,进行匈牙利一次即可#include <cstdio>#include <cstring>#define N 410#define M 50500int n,tot;int match[N];int head[N];struct edge{ int u, 阅读全文
posted @ 2013-05-10 20:55 Titanium 阅读(261) 评论(0) 推荐(0) 编辑
摘要: /*题意:给一个有向图,问有多少个点,是其他点都可以到达的其他点都可以到达该点,那么将图转置,就变为该点可以到达其他所有的点要找这样的点方法有很多,仿照Floyd的DP方法就是最容易写,但是点太多达到10000,会超时这里用SCC来做将转置后的图进行缩点,得到一个DAG,这个DAG每个大点内的小点(即原来的点)都是相互可达,关键是看这些大点能不能去到其他大点,如果一个大点能去到其他所有的大点,那么里面的小点也可以所以就是要找,有多少个大点,可以去到所有其他的大点,可知这样的大点,最多1个!!,而且是入度为0的点(这个不难理解,可以思考一下)找到了这个大点,那么里面包含的小点就都是可以的,所以扫 阅读全文
posted @ 2013-05-10 12:08 Titanium 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 强连通分量 + 最短路题意:城市间通信,给出n,n个城市,m,m条边,分别是端点和权,如果两个城市属于同一个国家,那么他们的通信时间为0,否则则按边权算一次的通信时间。两个城市被认为在一个国家,是从A能到B,从B也能到A。下面给出K个查询,能从u到v传递信息,需要多少时间,如果从u无法传递到v,输出那个长长的英文句子其实就是一个最短路,但是最短路的边权有讲究,虽然给出了u,v,w,但是u和v可能是同一个国家的,那么w应该是0而不是原来的值,所以要怎么判断u和v是不是在同一个国家,也就是他们可以互达,很明显不能查询一次判断一次,而是应该先搞出强连通分量,属于同一个强连通分量的两点间的边权为0这题 阅读全文
posted @ 2013-05-09 22:27 Titanium 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 强连通分量 缩点题意:这个题意比较难懂,题意读懂了,转化过来也不容易输入n,表示n个学校(1到n编号),下面n行,分别是对应每个学校的信息。每个学校可以给其他学校共享一些软件接而共享下去,要让所有学校用上软件,需要多少个学校带头共享软件;另外要让每个学校共享的软件都能被其他所有学校用上,那么要在原来的共享计划中,另外加入那些具体的共享呢(例如原来A学校不向B学校共享的,为了达到目的,A学校需要向B学校共享,因而增加了1)首先建立有向图,A向B共享软件,则有向边A--->B所有第1个问题,问的就是要多少次才能遍历完整个有向图,因为有这么多的学校带头共享软件了,沿着路径延伸,可以到达他们子树 阅读全文
posted @ 2013-05-09 20:59 Titanium 阅读(224) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 32 下一页