2017.1.21【初中部 GDKOI】模拟赛B组

今天的比赛翻车了,40+10+0=50,排得很后。主要原因是第三题没有认真思考,以为自己不会,其实只要再认真想一想就可以了。

T1:这题有一个十分巧妙的方法。

因为给出的图是连通、无环且没有重边的,所以我们可以认为给出的图是一棵树。首先,我们把所有点的祖先都设为1节点。然后在每删除一条边时,就把这条边连接的深度较深的节点及其子树的祖先都赋为这个节点。在查询两个节点是否连通时,就直接判断它们的祖先是否相同就行了。注意,在查找节点的子节点时,要用深搜,不要用广搜,广搜的细节太多了,我调了半个下午都调不出来。


T2:这题涉及到一个新知识点:求有向图的强连通分量。我们可以用Kosaraju算法(在书上看到的),算法步骤如下。

1、任选一个点对图进行dfs搜索,记录所有点的反弹顺序,并保存在一个数组a里,先反弹的在前面。

2、倒转每一条边的方向。

3、把a数组倒过来搜一遍,遇到没有被标记的点就对这个点进行dfs,dfs遍历到的点就是这个点所在的环。记录每一个环中点的数量,并把它们记入答案。


T3:直接找规律。比赛时以为自己不会,其实再仔细想想就可以了。下次比赛时要认真思考,不要轻易放弃。

你可能感兴趣的:(【初中部,NOIP提高组,】模拟赛B)