PAT刷题日志 2020/2/20

牧云@^-^@ 提交于 2020-02-22 04:31:22

开始图的部分:
第一题:1013 Battle Over Cities (25分)
这个题目大意就是给出一个无向图,现在每次删除其中的一个点,然后问剩余部分需要添加几条边才能连接起来,相当于计算剩余部分的连通区域个数,其实可以用dfs进行遍历,遇到删除点就return停止,然后访问过的点设置为true,然后连通区域个数+1,这样遍历完一遍图就可以统计出来互相独立的连通区域个数。

不过对于这个题我第一想到的是刚学过的并查集,不过由于我是并查集新手,尝试实现的时候并没有达到效果,还好参考了算法笔记豁然开朗。
并查集需要对不同的删除点创建不同的并查集合,然后统计根节点的个数,相对还是比较有意思的。

第二题:1021 Deepest Root (25分)
这个我完全按自己的想法,用了并查集合dfs写出来,提交直接AC,感觉很爽,不过跑出来了900ms,哈哈
在这里插入图片描述
这个题其实也可以不用并查集,也可以用一个flag数组配合dfs进行遍历所有节点,这样也可以判断连通分量。

第三题:1034 Head of a Gang (30分)
这个比较复杂,不仅统计连通分量,还要计算每个的权值以及总的权值,
ohh,我写了至少两个小时,改了bfs和dfs,最终竟然都得了20分,而且错的地方都是一样的。。。。。好吧,超出能力。。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!