Pagini recente » Cod sursa (job #340009) | Cod sursa (job #2226770) | Cod sursa (job #672528) | Cod sursa (job #1506421) | Cod sursa (job #473294)
Cod sursa(job #473294)
#include <cstdio>
#include <vector>
#define N 10000
#define M 10000
using namespace std;
vector<int> where[N];
vector<pair<int,int> >p;
int main ()
{int x,y;
unsigned i,j,z,n,m;
bool flag;
freopen("2sat.in","r",stdin);
freopen("2sat.out","w",stdout);
scanf("%d %d",&n,&m);
if(n>=32)return 0;
for (i=1;i<=m;i++)
{scanf("%d %d",&x,&y);
p.push_back(make_pair(x,y));
if(x<0)x=-x;
where[x].push_back(p.size()-1);
if(y<0)y=-y;
where[y].push_back(p.size()-1);
}
z=1<<(n-1);
for (int i=0;i<z;i++)
{flag=1;
for (j=0;j<p.size();j++)
{bool t1,t2;
t1=1<<(p[j].first >0?p[j].first :-p[j].first);
t2=1<<(p[j].second>0?p[j].second:-p[j].second);
if(p[j].first<0)
{t1=1-t1;
}
if(p[j].second<0)
{t2=1-t2;
}
if(t1&&t2)
{flag=0;
break;
}
}
if(flag)
{break;
}
}
for (j=1;j<(1<<n);j<<=1)
{printf("%d ",(i&j)&&1);
}
return 0;
}