自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

懒人一枚。

好好努力吧,少年。

  • 博客(22)
  • 收藏
  • 关注

原创 POJ3694-Network(Tarjan缩点+LCA)

题目链接题意:给你一个连通图,然后再给你n个询问,每个询问给一个点u,v表示加上u,v之后又多少个桥。思路:用Tarjan缩点后,形成一棵树,所以树边都是桥了。然后加入边以后,查询LCA,LCA上的桥都减掉。代码:#include #include #include #include #include #include using namesp

2014-10-22 11:55:06 962

原创 HDU3861-The King’s Problem(有向图强连通缩点+最小路径覆盖)

题目链接题意:题目大意:一个有向图,让你按规则划分区域,要求划分的区域数最少。 规则如下: 1、有边u到v以及有边v到u,则u,v必须划分到同一个区域内。 2、一个区域内的两点至少要有一方能到达另一方。 3、一个点只能划分到一个区域内。思路:根据规则1可知必然要对强连通分量进行缩点,缩点后变成了一个弱连通图。根据规则2、3可知即是要求图的最小路径覆盖。

2014-10-21 19:33:41 1010

原创 POJ2762-Going from u to v or from v to u?(强连通缩点+DP)

题目链接题意:给出一张有向图,判断图上的任意两个点是否存在一条路可达(单向可达即可)。思路:有向图找出强连通分量,然后缩点,因为题目要求任意两点存在可达的路,所以缩点之后的点,要形成一条单链,才能符合可达的要求,在这里用DP求最长路来判断是否能形成一条单链。代码:#include #include #include #include #include

2014-10-18 10:31:46 990

原创 POJ2553-The Bottom of a Graph

题目链接题意:求解Bottom(G),即集合内的点可以互相到达。思路:有向图的强连通,缩点,找出出度为0的点,注意符合的点要按升序输出。代码:#include #include #include #include using namespace std;const int MAXN = 5010;const int MAXM = 50010;

2014-10-18 10:01:14 1054

原创 UVA11770 - Lighting Away

题目链接题意:一个有向图,每对一个结点操作,就可以触发连锁反应,使得该结点及它直接或间接指向的点均获得标记,问至少需要操作多少个结点使得所有结点获得标记思路:有向图的强连通分量,用Tarjan缩点之后找出入度为0的点的个数,即为答案。跟UVA11504一样的题目。UVA11504代码:#include #include #include #

2014-10-17 16:03:23 920

原创 UVA11504- Dominos(Tarjan+缩点)

题目链接题意:多米诺骨牌的游戏,给出一些牌,以及哪张牌倒了之后会推倒哪张牌,求最少的推倒牌的张数,使得所有牌都倒下去。思路:有向图的强连通分量,用Tarjan缩点之后找出入度为0的点的个数,即为答案。代码:#include #include #include #include using namespace std;const int MAXN

2014-10-16 23:37:52 1616

原创 UVA11709- Trust groups

题目链接题意: 公司里面的人际关系,A相信B,B相信C,即A相信C,每个人都相信自己,求出存在几个小组,小组内的成员互相相信。思路:求有向图中,强连通分量的个数。思路:#include #include #include #include #include using namespace std;const int MAXN = 1010;

2014-10-16 20:08:00 942

原创 UVA11838- Come and Go

题目链接题意: 判断城市是否全部能相通思路:判断一张有向图是否强连通代码:#include #include #include #include using namespace std;const int MAXN = 2005;const int MAXM = MAXN * MAXN;struct Edge{ int to, n

2014-10-16 19:20:13 925

原创 UVA247- Calling Circles(有向图的强连通分量)

题目链接题意: 给定一张有向图,找出所有强连通分量,并输出。思路:有向图的强连通分量用Tarjan算法,然后用map映射,便于输出,注意输出格式。代码:#include #include #include #include #include using namespace std;const int MAXN = 2000;const in

2014-10-16 18:48:32 1569

原创 UVA10972 - RevolC FaeLoN(双连通分量)

题目链接题意: 给定一个无向图,问最少添加多少条边,使得这个图成为连通图思路:首先注意题目给出的无向图可能是非连通的,即存在孤立点。处理孤立点之后,其他就可以当作连通块来处理,其实跟POJ3352很像,只不过存在孤立点而已。所以找出桥,缩点,然后统计度数为0(伸出两条边)的点u和度数为1(伸出一条边)的点。最后的答案为(2 * u + v + 1) / 2。PO

2014-10-15 23:07:10 1081

原创 POJ2117-Electricity

题目链接题意: 求出删除一个点之后,连通块最多有多少思路:数组记录每个点删除后的连通块有多少个,注意图不一定是连通的。代码:#include #include #include #include #include #include using namespace std;const int MAXN = 10005;struct Edg

2014-10-13 17:03:46 1309

原创 UVA10199- Tourist Guide(割点)

题目链接题意: 给出一张无向图,找出割点,字典序输出割点的名字。思路:简单的割点的求解,用map映射,容易输出。代码:#include #include #include #include #include #include #include #include using namespace std;const int MAXN = 1

2014-10-13 16:29:54 911

原创 UVA610 - Street Directions(Tarjan)

题目链接题意: 给出一张无向图,尽量多的使边成为单向边,改变之后的图仍然强连通。思路:找出所有的桥,桥肯定是不能改变成为单向边,之后不是桥的边能组成n个连通块,按照dfs的顺序规定方向即可。代码:#include #include #include #include #include #include using namespace std;

2014-10-13 15:37:59 912

原创 UVA315- Network(无向图割点)

题目链接题意: 给出一张无向图,求割点的个数思路:很裸的题目,直接套用模版即可。代码:#include #include #include #include using namespace std;const int MAXN = 1005;struct Edge{ int to, next; bool cut;}edge

2014-10-13 10:38:56 2410

原创 UVA796- Critical Links(无向图的桥)

题目链接题意: 给出一个无向图,按顺序输出桥思路:求出所有的桥,然后按顺序输出即可代码:#include #include #include #include #include #include using namespace std;const int MAXN = 10005;struct Edge{ int to, nex

2014-10-13 10:03:37 1534

原创 UVA11080- Place the Guards(二分图染色)

题目链接题意:放最少的士兵去监视所有的道路, 但士兵不可相邻,符合的话,就输出最少的士兵数,否则输出-1思路:其实就是二分图染色,即黑白染色,然后选择黑白染色最少的那个颜色累加,但要注意可能有多个连通块,只要有一个连通块不符合的话,就不符合。代码:#include #include #include #include #include using

2014-10-11 20:07:18 902

原创 UVA11294-Wedding(2-SAT)

题目链接题意:有n对夫妻参加一个婚宴。所有人都坐在一个长长的餐桌的左边或者右边,所有夫妻都只能面对面坐,包括新娘和新郎。新娘只能看到坐在她不同侧的人。有m对人超过架,新娘不希望看到他们坐在同一侧。问有没有分配方案满足新娘的要求。思路:2-SAT问题。假设每对夫妇为一个变量xi。假设xi为true时,妻子与新娘坐同一侧;xi为false时,丈夫与新娘坐同一侧。当xi和xj

2014-10-05 15:09:18 944

原创 UVALive3713-Astronauts(2-SAT)

题目链接题意:有A、B、C3个任务分配给n个宇航员,其中每个宇航员恰好分配一个任务。假设n个宇航员的平均年龄为x,只有年龄大于x的才能领取A任务;只有年龄严格小于x的才能领取B任务,而任务C没有限制。有m对宇航员相互讨厌,因此不能分配同一任务。求出是否能找出符合的任务方案。思路:用xi表示第i个宇航员的分配方案。年龄大于等于x的可以选择A(xi = true)和C(xi

2014-10-04 21:13:49 1071

原创 POJ3352-Road Construction(边连通分量)

题目链接题意:问要添加几条边才能使所给无向图图变成边双连通图。思路:一个有桥的连通图,如何把它通过加边变成边双连通图?方法为首先求出所有的桥,然后删除这些桥边,剩下的每个连通块都是一个双连通子图。把每个双连通子图收缩为一个顶点,再把桥边加回来,最后的这个图一定是一棵树,边连通度为1。统计出树中度为1的节点的个数,即为叶节点的个数,记为leaf。则至少在树上添

2014-10-03 21:15:44 1889 1

转载 图的割点、桥与双连通分支

[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[双连通图、割点与桥]

2014-10-03 20:02:06 663

原创 POJ1236-Network of Schools(Tarjan + 缩点)

题目链接题意:给定一张有向图,问最少选择几个点能遍历全图,以及最少添加几条边使得有向图成为一个强连通图。思路:对于有向图而言,首先求出有几个强连通分量,之后将每个强连通分量缩点,形成DAG,本题开头第一句就说图是连通的了。之后想要遍历整张图的话,只要找出入度为0的点有几个,而添加边的数量就取决于所有点的出入度大小。代码:#include #include

2014-10-03 15:36:51 864

原创 UVA10765-Doves and bombs(BCC)

题目链接题意:给定一个n个点的连通的无向图,一个点的“鸽子值”定义为将它从图中删去后连通块的个数。求“鸽子值”按降序排列的前m个。思路:其实题目就是要用来寻找割顶,我们只需找出割顶,然后记录这个割顶属于几个不同连通分量的公共点,不是割点的,去掉之后,图的连通块数为1。代码:#include #include #include #include #

2014-10-03 13:55:42 1122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除