ZOJ 1060 Sorting It All Out (POJ1094) (拓扑排序)

来源:互联网 发布:mac系统照片图库坏了 编辑:程序博客网 时间:2024/04/30 05:29

其实这题是我拿到这些题时,第一道仔细看的题(当然我开始没有看到过的人数只有100……),第一反应是拓扑排序,可是后来发现传统拓扑排序过不了,因为这道题要求图的联通,于是想当然的加了个并查集函数,敲完交上就WA了,再仔细看,发现题目要求输出的序列是唯一的,而拓扑排序并不是稳定排序,所以直接拓扑的肯定不行。

 

我的处理方案(其实是大神刘超的处理方案)是:

找到第一个入度为0的点,以它为起点,更新所有点入度值,接下来,只在和这个起点相邻的点里面重复以上的操作,这样如果能够得到一个拓扑序列,那么就一定是唯一的,而且符合题目要求。

 

当然题目中还有一些注意的地方:

 

1,判断是否完成拓扑排序时,要看所有点是否都已经在当前所得拓扑序列中,如果没有包含所有点,那么即使toposort()返回值是1,也要继续构图。

 

2,用floyd的判环其实不如用topo做(当然要领写一个topo()),我用floyd比较习惯了,所以没改

 

这题在POJ的discuss里面有测试数据,据说是后台数据……真的很强大,过了那个,应该就能A的

 

 

原创粉丝点击