连通图
_pkm_
love coding
展开
-
HDU1269 迷宫城堡 (强连通图判定)
题意:判定给出的有向图是不是强连通图 Tarjan算法模板题目#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#原创 2015-08-26 19:04:38 · 1272 阅读 · 0 评论 -
HIHO #1185 : 连通性·三
题目链接先使用tarjan算法,计算强连通分量,进行缩点成DAG,然后在使用拓扑排序计算tarjan中,我们只需要从1号节点计算,因为开始时在1号点。 建立新图的过程中,1号点不能到达的点也不用建立到新图里面#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL lo原创 2016-08-20 15:58:57 · 329 阅读 · 0 评论 -
HIHO #1184 : 连通性二·边的双连通分量
题目链接Tarjan算法,介绍可以看题目讲解,很好很清楚#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j原创 2016-08-20 10:08:06 · 335 阅读 · 0 评论 -
HIHO #1183 : 连通性一·割边与割点
题目链接使用Tarjan算法计算无向图的割点和桥,提示讲解的也很清晰 需要注意的是,某一个割点可能会被多次计算,所以一般是先记录然后最后统一输出#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#de原创 2016-08-20 09:32:48 · 316 阅读 · 0 评论 -
计算机学院大学生程序设计竞赛(2015’11)
额,貌似都是暴力,除了油菜花那个用了数据结构。考验细心与编程能力。挺不错的 。1001,搬砖 题意:给你一个数字,把数字分为2半,代价是分开后二者的差值。要求最后全部是1。 解法:用dfs(n):表示把n分为2半需要的代价。//#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include原创 2015-11-29 22:04:55 · 541 阅读 · 0 评论 -
2015 NOIP day2 t2 信息传递 (tarjan 连通图)
题目链接 题意:略: 解答:缩点后,计算连通分量里 的点数 ,但是最后一个case无法通过。貌似是爆栈了#pragma comment(linker, "/STACK:1024000000,1024000000")#include<cstdio>#include<algorithm>#include<cstring>#include<vector>using namespace s原创 2015-11-19 20:57:38 · 835 阅读 · 0 评论 -
BZOJ1051: [HAOI2006]受欢迎的牛(强连通Tarjan 缩点)
题目链接 题意:每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。 解法:跑一遍Tarjan算法,进行缩点,然后在缩点后的图上找出度为0 的个数。#include<bits/stdc++.h>using原创 2015-11-09 13:33:08 · 444 阅读 · 0 评论 -
HDU3594 Cactus ([好题] 强连通之仙人掌图 )
题意:判断是不是仙人掌图,仙人掌图的定义, 1.首先是强连通的 2.任意一个遍只能属于一个圈。 仙人掌图的分析#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#includ原创 2015-08-29 09:38:34 · 1013 阅读 · 0 评论 -
HDU3861 (强连通缩点+二分匹配最小路径覆盖)
题意:把城市至少分成几个块,规则有三 1. A能B,B能到A,那么A,B一定要在一起。 2. 一个城市只能属于一个块。 3. 在一个块里的城市,任意2点之间必须有路径。 对于规则1,就是说强连通的必须在一起,所以用Tarjan进行缩点,然后,规则2,3就是求DAG最小路径覆盖。(最小路径覆盖=顶点数-最大匹配)#include<cstdio>#include<iostream>#in原创 2015-08-27 18:51:55 · 726 阅读 · 0 评论 -
HDU3639Hawk-and-Chicken (好题,强连通缩点,建图,DFS回溯)
题意:大家玩老鹰抓小鸡的游戏,但是大家都想做老鹰,所以老师安排一个投票,每个人不能投自己,但是可以投多个人,投票具有传递性,比如A–>B, B–>C,那么B获得A一票,C获得B一票,A一票,共计2票。现在问谁能胜出,并列的也算,输出胜出者的票数,以及升序输出,获胜的编号。 思路:由于大家投票,可能有环,所以需要Tarjan算法把图转换为DAG,然后进行搜索,但是如果缩点后正向建图,搜索时会发现,如原创 2015-08-28 13:12:11 · 962 阅读 · 1 评论 -
HDU3072 Intelligence System(强连通+最小传递费用+边权)
题意:从某一点出发,经历所有的点,使费用最小,每条边是有费用的。 缩点,建立DAG#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#includ原创 2015-08-27 17:52:53 · 465 阅读 · 0 评论 -
HDU3836Equivalent Sets(强连通+加边构成强连通)
题意:至少加几条边构成强连通, 和上一题一样#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<queue>#include<ve原创 2015-08-27 10:22:04 · 818 阅读 · 0 评论 -
HDU1827 Summer Holiday(强连通+缩点+最小传递费用)
题意:给出人物关系图,要把一个通知告诉所有人,告诉每一个人有一个费用,现在想知道最小通知的人与费用。 思路:利用Tarjan算法,对原图进行缩点,然后找出入度为0 的点,那么这个人是必须要通知的,由于经过缩点,所以,如果这个点是缩点来的,那就枚举下这个点里的任一个点,找到最小的费用点。#include<cstdio>#include<iostream>#include<algorithm>原创 2015-08-27 12:11:12 · 649 阅读 · 0 评论 -
HDU2767Proving Equivalences(强连通+缩点+ 至少加几条边让整个图变成强连通))
题意: 至少加几条边让整个图变成强连通。 思路:对于N个点的图,我们知道至少需要N条边才能使这个图强连通,现在我们先对题目的图计算一下强连通,对于已经在一个强连通的点,把他们看做为一个点,然后对新形成的图,计算出度,入度为0的最大值,因为,加一边,可以使入度,出度加一。#include<cstdio>#include<iostream>#include<algorithm>#include原创 2015-08-27 10:18:45 · 1538 阅读 · 0 评论 -
HIHO #1190 : 连通性·四(点的双联通分量)
题目链接点的双联通分量,不注意写出了一个bug,找了2个多小时= =,我的边存的是0开始的,然后ans数组一开始也是0,然后就是if的地方。。。。。还是tarjan的算法,结合提示,这里需要存边,然后栈里面保存的是边,而不是点,这里我用边的在边集es中的编号,作为边的标志#include<bits/stdc++.h>using namespace std;#define cl(a,b) mems原创 2016-08-20 20:23:06 · 401 阅读 · 0 评论