通过读题,容易发现,当回答为yes时 \(x,y\) 必属于同类,当回答为no时二者必为异类(并且当 \(x=y\) 时,回答必为yes,不过这题不用这个性质). 于是先按关系维护连通块,然后求出每个连通块的人数,用背包看是否能够凑出.可以把一个连通块的看作一个物品,总共的天神数就是背包的容量. 还用了set辅助维护每个连通块里具体是哪些人. 这道题刚开始一直卡着,结果照着样例手玩一遍就全懂了,所以光空想还是不行的. 具体看丑陋的代码吧-- #include <bits/stdc++.h> u…