rt,用的状态压缩加set,第三个测试点TLE了,吸氧能过,但是还是希望能不开O2过去
#include<iostream>
#include<set>
using namespace std;
int a[25],b[25];
set<int> s;
int main(){
int n,x,cnt=0;
cin>>n;
x=(1<<n);
for(int i=0;i<n;i++){
cin>>a[i]>>b[i];
}
for(int i=0;i<x;i++){
bool flag=0;
for(int j=0;j<n;j++){
if((i&(1<<j))>0){
s.insert(j+1);
}
}
for(int j=0;j<n;j++){
int cur1=s.count(a[j]);
int cur2=s.count(b[j]);
if((cur1==0 && cur2==0) || (cur1==1 && cur2==1)){
flag=1;
break;
}
}
if(flag==0) cnt++;
s.clear();
}
cout<<cnt;
return 0;
}