参考

因为时间有限,算法竞赛,会用就好,后面再补充正确性证明

问题解决类型:

求解一些bool型0/1变量,要满足一些形如xi=axj=b的关系。

流程

每个变量拆点为,x0x1,分别表示值取0/1
强联通分量缩点,每个分量里面的变量值相同。如果x0x1在同一个强连通分量内,无解。
如果x0能最终到达x1,所以最终x=1,因为如果x=0两个都满足,矛盾。
所以选择节点拓扑序大的值即可。
发现跑Tarjan,得到强连通分量编号越小的拓扑序越大
所以选择编号小的即可。