Pagini recente » Cod sursa (job #23746) | Cod sursa (job #1230659) | Cod sursa (job #2283906) | Cod sursa (job #173029) | Cod sursa (job #2449766)
#!/usr/bin/env python3
import random, sys
random.seed(14)
sys.stdout = open('2sat.out', 'w')
with open('2sat.in' ,'r') as f:
pair = lambda: tuple(map(int, f.readline().split()))
rbool = lambda: random.random() >= 0.5
N, M = pair()
tt, expr = [rbool() for _ in range(N + 1)], [pair() for _ in range(M)]
def truthy():
if random.randrange(10) < 1:
random.shuffle(expr)
for a, b in expr:
aa = tt[a] if a > 0 else not tt[-a]
bb = tt[b] if b > 0 else not tt[-b]
if not aa and not bb:
if rbool():
tt[abs(b)] = not tt[abs(b)]
else:
tt[abs(a)] = not tt[abs(a)]
return False
return True
for _ in range(2000):
if truthy():
print(' '.join('1' if t else '0' for i, t in enumerate(tt) if i > 0))
break
if not truthy():
print(-1)