POJ 1679 The Unique MST

这个题我没想出来,一种解法是首先对于每条边确认是不是还有和这条边权值相同的其他边,如果有的话标记上,然后先来一遍裸的kruskal,把第一遍kruskal用到的节点全都标记上,然后开始扫,如果当前边既有同权的其他边又被在第一次kruskal中使用了了,就把这个边干掉再来一遍kruskal,看看这次生成树的总权值变没变,如果没有变就说明生成树不唯一,如果变了,就保持着这个边被干掉的状态接着扫,碰见符合要求的再干掉(保持着以前干掉的边被干掉的状态,用剩下的边尝试组生成树.如果你不判断有没有同权的边直接挨个把第一遍用过的边干掉,也可以。

RE了好多次然后换个编译器就过了,我也不知道是我抽了还是oj抽了,还有可能是.size()这个函数因为是返回unsigned long如果-1的话可能故障,以后要么强制类型转换,要么开个常数存一下。

Leave a Reply

Scroll to top