摘要: 强连通。。只需要最后记录每一个强连通分支的入度的最小值(其中有入度为0的,这样的不用考虑),把这些这些最小值加起来就是了。。代码:View Code 1 # include<stdio.h> 2 # define N 50005 3 # define M 100005 4 # define PI 0xfffffff 5 struct node{ 6 int from,to,next,data; 7 }edge1[M],edge2[M]; 8 int visit1[N],visit2[N], 9 head1[N],head2[N];10 int T[N],Belong[N],val[ 阅读全文
posted @ 2011-04-19 18:35 奋斗青春 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 这两题都是强连通。。上午刚开过,下午放学后就趁热打铁,把这两道题也给解决了。。。只要把kosaraju的意思理解了,用起来会很顺手的,,对于这一类的题目只需要稍微改下就可以了。。对于1269题,很明显强连通,,只需要判断Bcnt就行了,判断有多少了强连通分支。。。1827题,Wiskey只需要和 入度为0的强连通分支打电话。。。对于这样的强连通分支找到打电话所耗的费用最少的一个,,可以在第二个dfs里面处理一下就行了,记录耗用电话费最少的。。。1269题就不贴代码了,,1827代码:View Code 1 # include<stdio.h> 2 # include<stri 阅读全文
posted @ 2011-04-19 17:14 奋斗青春 阅读(771) 评论(0) 推荐(1) 编辑
摘要: 强连通。。。前两天比赛的题目, 当时不理解清题目, 以为是一个无向图,然后找环。。怎么搞都搞不出来。。。今天上午看了一下强连通,,学习了Kosaraju这个算法。。题目大意是给你一个有向图,问你至少加几条边让整个图变成强连通,,强连通图的意思是图里面任意两个顶点都能够到达,,解法:缩点后统计没有出度的和没有入度的点个个数,两者取最大值代码:View Code 1 # include<stdio.h> 2 # include<string.h> 3 # define PI 50005 4 # define M 20005 5 struct node{ 6 int from 阅读全文
posted @ 2011-04-19 12:21 奋斗青春 阅读(425) 评论(0) 推荐(0) 编辑