int i=1;i<=n;i++ ){ if( find(i)==find(i+n) ){ f = false; break; } } if( f==false ) { puts("Inconsistent"); continue; } int ans = 0; for( int i=1;i<=2*n;i++ ){ if( !vis[i] ){ Cnt_false = Cnt_true = 0; dfs( i,n ); ans += max( Cnt_true,Cnt_false ); } } printf("%d\n",ans ); } return 0; } /*
思路:如果第x句说y是对的,则x,y必定是一起的,x+n,y+n是一起的;反之x,y+n//y,x+n是一起的。
利用并查集判断 x 和 x+n 是否在同一集合。
至于查找最多正确的话,对这些 “小树” 进行dfs即可。
*/
#include
#include
#include
#include
#include
#include
#include