2-SAT DFS
每张地图都只有两种车能使用且只能用一辆车,这样的限制满足2-SAT。
设每种地图能使用的两辆车为id[x]和id[x]^1。
先假设没有x地图存在,那么对于一个限制 (x,p,y,q) ( x , p , y , q ) ,我们可以进行如下连边:
1.地图x无法放第p种车。此时略过。
2.地图x可以放第p种车,但是地图y无法放第q种车。此时连一条id[x]->id[x]^1的边(这里的x根据p是第一种还是第二种车来定,下面连边时也一样),表示如果地图x选了p就不满足。
3.地图x可以放第p种车,且地图y可以放第q种车。此时连id[x]->id[y]和id[y]^1->id[x]^1的边。表示如果x选了p那么y必选q,y选了另一种那么x也必选另一种。
然后Tarjan缩点判断即可。单词判断时间复杂度 O(n+m) O ( n