传送门:
解题思路:
主要利用了:
并查集,合并关系是a=b的情况,注意在合并的时候要以大的为树根,也就是向编号大的合并。
然后利用拓扑排序,进行关系的判断。用L表示度为0的点,如果在同一时刻度数为零的点有多个,这就是“NUCERTAIN”情况。
如在存在回路,则说明存在“CONFILICT”。
实现代码:
#include#include #include #include #include using namespace std;const int maxn=10010;struct Edge{ int u,v; char s[4];}edges[maxn*2];vector G[maxn];int deg[maxn];int fa[maxn];int num=0;bool crt;void init(int n){ crt=true; num=n; for(int i=0;i