这两道题差不多,POJ这道我很久以前就做过,但是比赛的时候居然没想起来。。
POJ 这道题的题意是,N个王子每个人都有喜欢的公主,当他们选定一个公主结婚时,必须是的剩下的人也能找到他喜欢的公主结婚。
思路,首先对于王子,对于每一个他喜欢的公主,直接连边,然后再根据已经给出的匹配方案,建立公主->王子的边。
最后求出SCC后在同一强联通分量里的王子和公主就可以了。
代码就不贴了
下面再讲一下HDU 4685这道题,两道题的唯一区别就是,上一道题,每个公主到王子的匹配方案都是给出的,是一定存在的,那是因为公主和王子的个数是相同的。
但是这道题公主和王子的个数不同,就无法做到两两匹配,必然存在光棍的情况。
光棍其实挺正常的,但是对于这道题,我们就需要虚拟一些王子和公主出来。
一个王子没有匹配的话,那么虚拟一个公主出来,表示所有的王子都喜欢这个公主,同理虚拟出王子的情况。
那么在求出匹配之后,我们就可以根据这些匹配来建立公主->王子的边,然后操作就和上一题一样了。
代码:
#include
#include