사용자 도구

사이트 도구


ps:problems:boj:11281

2-SAT - 4

ps
링크acmicpc.net/…
출처BOJ
문제 번호11281
문제명2-SAT - 4
레벨플래티넘 3
분류

2-sat

시간복잡도O(n+m)
인풋사이즈n<=10,000, m<=100,000
사용한 언어Python
제출기록52596KB / 336ms
최고기록224ms
해결날짜2022/10/28
태그

[라이]2-SAT 문제

풀이

  • 2-SAT - 3 에서, 해의 존재 여부뿐 아니라, 해를 하나 찾아서 출력하는 것이 추가된 문제. 여전히 2-SAT의 기본적인 형태이다. 시간복잡도는 O(n+m)

코드

"""Solution code for "BOJ 11281. 2-SAT - 4".

- Problem link: https://www.acmicpc.net/problem/11281
- Solution link: http://www.teferi.net/ps/problems/boj/11281

Tags: [2-sat]
"""

import sys
from teflib import twosat


def main():
    N, M = [int(x) for x in sys.stdin.readline().split()]
    two_sat = twosat.TwoSat(N)
    for _ in range(M):
        i, j = [int(x) for x in sys.stdin.readline().split()]
        x = i - 1 if i > 0 else i
        y = j - 1 if j > 0 else j
        two_sat.x_or_y(x, y)

    try:
        assignment = two_sat.find_truth_assignment()
    except ValueError:
        print('0')
    else:
        print('1')
        print(' '.join('1' if x else '0' for x in assignment))


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
S P​ M S S
 
ps/problems/boj/11281.txt · 마지막으로 수정됨: 2022/11/07 16:25 저자 teferi