내용으로 건너뛰기
테페리넷
사용자 도구
등록
로그인
사이트 도구
검색
도구
문서 보기
Fold/unfold all
역링크
미디어 관리자
사이트맵
등록
로그인
>
미디어 관리자
사이트맵
현재 위치:
테페리넷
»
Problem Solving
»
문제
»
백준 온라인 저지 (BOJ)
»
완벽한 선거!
ps:problems:boj:3747
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== 완벽한 선거! ====== ===== 풀이 ===== * 기본적인 [[ps:2-sat]] 문제이다. 입력으로 들어오는 두 변수들의 페어를 그대로 or절로 만들고, 절들을 and해서 식을 만들면 끝. 시간복잡도는 O(N+M). * 하지만 이 문제는 입력데이터를 처리하는데에 매우 골치가 아프다. 대충 듣기에는 공백으로 구분되는 입력값들이 실제로는 아무 whitespace들로 구분되는것 같다. whitespace 단위로 입력을 받는 cpp는 아무 문제가 없겠지만, line단위로 입력받는 파이썬은 이것때문에 꼬인다. 전체 데이터를 한번에 입력받아서 처리하는 식으로 어찌어찌 구현했다. ===== 코드 ===== <dkpr py> """Solution code for "BOJ 3747. 완벽한 선거!". - Problem link: https://www.acmicpc.net/problem/3747 - Solution link: http://www.teferi.net/ps/problems/boj/3747 Tags: [2-sat] """ import sys from teflib import twosat def main(): inp = iter(sys.stdin.read().split()) while True: try: N = int(next(inp)) except StopIteration: break two_sat = twosat.TwoSat(N) M = int(next(inp)) for _ in range(M): x, y = (int(next(inp)), int(next(inp))) x = x - 1 if x > 0 else x y = y - 1 if y > 0 else y two_sat.x_or_y(x, y) print('1' if two_sat.is_satisfiable() else '0') if __name__ == '__main__': main() </dkpr> * Dependency: [[:ps:teflib:twosat#TwoSat|teflib.twosat.TwoSat]] {{tag>BOJ ps:problems:boj:플래티넘_4}}
ps/problems/boj/3747.txt
· 마지막으로 수정됨: 2022/11/07 16:25 저자
teferi
문서 도구
문서 보기
역링크
Fold/unfold all
맨 위로