图论常见模型——强连通分量

强连通分量


【本文转自 http://wenku.baidu.com/view/d96ebeceda38376baf1fae14.html 的PPT,需要原始文档的请自行下载~ 】

算法:复杂度均为O(V+E)
—— Kosaraju (两次dfs)
—— Tarjan / Gabow (一次dfs)

例题:PopularCows (USACO Fall 03) POJ 2186

N头奶牛,给出若干个欢迎关系A B,表示A欢迎B,欢迎关系是单向的,但是传递的。另外每个奶牛都是欢迎他自己的。求出被所有的奶牛欢迎的奶牛的数目。奶牛数目N≤10000,直接的欢迎关系数目M≤50000

解:如果A欢迎B,就连一条从A到B的有向边
容易发现,在同一个强连通分量里的点具有同样的“受欢迎程度”:能够到达它们的点集是相同的,从它们出发能够到达的点集也是相同的。
我们求出原图的强连通分量,然后收缩……
容易发现,新图中唯一的出度为0的点即为所求。
因为新图不含有环,这样的点一定存在。
如果出度为0的点不唯一则无解。

时间复杂度 O(E)

习题:

1、WTommy需要向所有人通知某件事情,因为人数众多,他想出了一个省力的方法:他只通知队中的某些人,然后让这些人去通知所有他们认识的人,这些新被通知的人又去通知更多的人……直到最后队中的所有人都被通知到。
给定最初时WTommy通知每个人所需的花费,现在他想求出一种方案,使得花费最少,并且保证最终所有人都能被通知到。

2、NOIP2009 最优贸易(Trade)
C 国有 n 个大城市和m 条道路(单向或双向),每条道路连接这 n 个城市中的某两个城市。水晶球在各地有不同的价格。某商人准备从1走到n(任何城市可以经过多次),在某个城市买入,并在另一城市卖出,收益即为价格之差。他最多只买入和卖出1次,求最大收益。
如下图,五城市水晶球价格分别为 4,3,5,6,1 。则最高的方案是1->4->5->4->5。在第一次到5时买入,第二次到4时卖出,收益为6 – 1 = 5
 

3、Poly-timeReductions(Hefei 2008)
给定一个有向图G,求一个包含最少边的有向图G’,使G和G’的传递闭包相同。
图的传递闭包是指,若存在边A->B, B->C,则必存在边A->C
N<= 100, M <= 10000

Tip:求强连通分量,缩点……
在同一强连通分量内部,最少需要几条边?
不同分量之间的边,有哪一种是不必要的?

【本文转自  http://wenku.baidu.com/view/d96ebeceda38376baf1fae14.html  的PPT,需要原始文档的请自行下载~ 】
【也可以右键下面的小萌猫,图片另存为,修改后缀名.zip,解压缩~】



你可能感兴趣的:(c,算法,文档)