사용자 도구

사이트 도구


ps:problems:boj:17546

Exits in Excess

ps
링크acmicpc.net/…
출처BOJ
문제 번호17546
문제명Exits in Excess
레벨골드 3
분류

DAG

시간복잡도O(E)
인풋사이즈E<2*10^5
사용한 언어Python 3.13
제출기록43580KB / 192ms
최고기록192ms
해결날짜2026/02/14

풀이

  • 주어진 방향 그래프에서 절반 이하의 에지를 제거해서 사이클이 없도록 만드는 문제.
  • 가능한 방법은 다양하지만, 가장 간단하게 해결할 수 있는 방법은, 모든 u→v 에지중에서 u>v인 에지만 남기고 나머지를 지우면 이 그래프는 DAG가 된다. 만약 지워야 할 에지가 절반이 넘는다면, 반대로 u>v인 에지를 지우고 u<v 인 에지를 남기면 된다.
  • 시간복잡도는 O(|E|)

코드

"""Solution code for "BOJ 17546. Exits in Excess".

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

Tags: [ad hoc]
"""

import sys


def main():
    _n, m = [int(x) for x in sys.stdin.readline().split()]
    inc_order_edges, dec_order_edges = [], []
    for i in range(1, m + 1):
        u, v = [int(x) for x in sys.stdin.readline().split()]
        if u < v:
            inc_order_edges.append(i)
        else:
            dec_order_edges.append(i)

    answer = min((inc_order_edges, dec_order_edges), key=len)
    print(len(answer))
    print(*answer, sep='\n')


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
J᠎ N Q H H
 
ps/problems/boj/17546.txt · 마지막으로 수정됨: 2026/02/14 01:17 저자 teferi