题意:
问给你n个点和m对点
如果每对点必须一个在圆里一个在圆外是否可行
思路:
我们对每个点建造虚点 进行四次连边 然后跑一遍2-sat就可以了
1 #include2 #include 3 #include 4 #define cl(a,b) memset(a,b,sizeof(a)) 5 #define debug(a) cerr<<#a<<"=="< < y[i]) swap(x[i],y[i]);75 }76 for(int i=0;i x[j]))81 {82 addedge(i*2,j*2+1);83 addedge(j*2,i*2+1);84 addedge(i*2+1,j*2);85 addedge(j*2+1,i*2);86 }87 }88 }89 if(Two_sat(m)) puts("panda is telling the truth...");90 else puts("the evil panda is lying again");91 return 0;92 }/*93 94 4 295 0 196 3 297 98 */