2011年8月13日
摘要: POJ_3177说实话,我现在还是不明白这个题目究竟是想让我们如何去处理问题。首先的疑惑就是如果连续输入两个1 2,1和2之间算一条路还是两条路,其次如果分别输入1 2及2 1,这时1和2之间算一条路还是两条路?由于对上面数据的理解的不同,会用3种不同的处理方式:①不管1 2还是2 1,就当做是1和2之间连通,也就是完全忽略题目中所说的两点之间可以有多条路,多条时只当有一条。②两个1 2看做一条路,1 2及2 1看做两条路。③两个1 2看做两条路,1 2及2 1也看做两条路。其中根据①和②写出的程序都是可以AC的,而根据③写出的程序,依据我看到的一些讨论,应该是WA掉的。也正是因为这个,导致我 阅读全文
posted @ 2011-08-13 20:33 Staginner 阅读(259) 评论(0) 推荐(0) 编辑
摘要: POJ_3352 这个题目和问最少添加多少条有向边使图成为一个强连通分量的题目有些类似,只不过题目的模型换成了边双连通分量的模型,我们同样可以用tarjan算法来解决,只不过相对于强连通分量的tarjan代码有稍许不同。由于题目中说明了各个点之间都是连通的,因而我们就不用再考虑孤立的点或者边双连通块了,只需要把最后的边双连通分量染色,求出各个所谓的是leaf的边双连通分量的个数,最后的答案就是(leaves+1)/2。所谓的“叶子”,就是针对一个边双连通分量来讲,它只和除自己之外的一个边双连通分量间存在一条无向边,那么这个边双连通分量就是所谓的“叶子”。至于最后的结果为什么是(leaves+1 阅读全文
posted @ 2011-08-13 17:15 Staginner 阅读(295) 评论(4) 推荐(0) 编辑