Pagini recente » Cod sursa (job #492100) | Cod sursa (job #1553245) | Cod sursa (job #352915) | Cod sursa (job #1052486) | Cod sursa (job #1414216)
#include<fstream>
#include<cstdlib>
using namespace std;
typedef int var;
ifstream fin("2sat.in");
ofstream fout("2sat.out");
#define MAXN 200005
var EA[MAXN], EB[MAXN];
bool VAL[MAXN];
bool FIXED[MAXN];
var n, m;
int main() {
var a, b;
fin>>n>>m;
srand(23761287);
for(var i=1; i<=m; i++) {
fin>>a>>b;
EA[i] = a;
EB[i] = b;
}
for(var i=1; i<=n; i++) {
VAL[i] = rand()%2;
}
bool ok = 0;
var pas = 0;
while(!ok) {
ok = 1;
pas++;
for(var i=1; i<=m; i++) {
if(EA[i] > 0 && VAL[EA[i]])
continue;
if(EB[i] > 0 && VAL[EB[i]])
continue;
if(EA[i] < 0 && !VAL[-EA[i]])
continue;
if(EB[i] < 0 && !VAL[-EB[i]])
continue;
var ea = max(EA[i], -EA[i]);
var eb = max(EB[i], -EB[i]);
if(!FIXED[ea]) {
FIXED[ea] = 1;
VAL[ea] ^= 1;
} else if(!FIXED[eb]) {
FIXED[eb] = 1;
VAL[eb] ^= 1;
} else {
fout<<-1;
return 0;
}
}
}
if(pas > 100) {
fout<<-1;
return 0;
}
for(var i=1; i<=n; i++) {
fout<<VAL[i]<<" ";
}
return 0;
}