强联通
hill_555
这个作者很懒,什么都没留下…
展开
-
hdu1269 迷宫城堡 (模板)
模板。。。 #include #include #include using namespace std; #define clr(x)memset(x,0,sizeof(x)) const int maxn=100010; struct node{ int to; int next; }q[100010]; int head[100010]; int tot; int n,m;原创 2013-07-31 15:57:42 · 583 阅读 · 0 评论 -
POJ 2186 Popular Cows(缩点)
有 N 个奶牛,奶牛A可能认为B 优秀,奶牛B可能认为C优秀,奶牛A认为奶牛C也是优秀的,问可以找出有多少个奶牛被其他所有奶牛都认为是优秀的。 如果奶牛A认为奶牛B优秀,B到A连边,缩点,如果有多个入度为0的点则不存在,最后输出入度为0 的该强连通分量内点的个数。 #include #include #include using namespace std; #define clr(x原创 2013-07-31 17:30:23 · 483 阅读 · 0 评论 -
POJ 1236 Network of Schools (缩点)
有 N 个学校,每个学校提供软件支持的学校编号,一个学校得到软件支持之后便可以支持他能支持的学校,问至少对多少学校提供软件支持可以使得所有学校都得到软件支持,和至少在这些学校添加多少条边能使得任何一个学校得到软件支持后,其他所有学校都能得到软件支持。 第一问缩点后入度为0的点的个数。第二问入度为0的和出度为0的点中个数大的为答案 #include #include #include u原创 2013-07-31 16:46:46 · 488 阅读 · 0 评论 -
hdu2767 Proving Equivalences(缩点)
在 n 个节点的有向图m 条边,最少增加多少条边将原图变成一个强连通图。 缩点之后 入度为0的点和出度为0的点中大的就是答案。 #include #include #include using namespace std; #define clr(x)memset(x,0,sizeof(x)) const int maxn=20010; struct node{ int to;原创 2013-07-31 16:24:19 · 565 阅读 · 0 评论 -
hdu3836 Equivalent Sets(缩点)
知道了一些集合的包含关系,问至少还要知道多少个包含关系才能证明这些集合是相互等价的。相当于在图中加入一些边,使得原图任意两个点互达即强连通, #include #include #include using namespace std; #define maxn 20010 #define clr(x)memset(x,0,sizeof(x)) struct node{ int to原创 2013-07-31 19:38:47 · 444 阅读 · 0 评论 -
POJ2762 Going from u to v or from v to u?(缩点+树最长路)
给定N个点,E条边的有向图,问图中是否任意两个点u,v都有u能到达v或者v能到达u。 缩点后 找入度为0的点开始bfs 最长路=强联通分量+1则Yes否则No。 #include #include #include #include using namespace std; #define clr(x)memset(x,0,sizeof(x)) #define maxn 1010 st原创 2013-08-01 15:39:32 · 746 阅读 · 0 评论 -
2013黑龙江省赛G Fly(缩点+最长路)
有n个城市,从起点出发最多可以到几个城市。 #include #include #include #include using namespace std; #define clr(x)memset(x,0,sizeof(x)) #define INF 0x1f1f1f1f #define maxn 100010 struct node{ int to,next,w; }e[150010原创 2013-08-03 16:46:26 · 631 阅读 · 0 评论