[백준] 34012. DagDag구리

newbieski·2025년 9월 4일

백준

목록 보기
250/255

https://www.acmicpc.net/problem/34012

문제요약

  • 방향이 있는 그래프가 주어짐(노드 10만, 간선 50만)
  • 사이클은 없음
  • 모든 노드에서 도달 가능한 E가 존재
  • E가 아닌 모든 노드에서 E로 가는 두 개의 겹치지 않는 경로를 만들기 위해 추가해야하는 최소 간선 개수 구하기
  • 겹치지 않는다 : 같은 간선을 공유하지 않는다

접근법

  • 처음에는 모든 경로를 찾아야하나 생각함
  • E는 몇 개일까?
    • 2개라면? E1 -> E2, E2 -> E1 을 가야하니까 사이클!
    • 따라서 E는 1개
  • E에 가장 가까운 노드를 고려한다면
    • 그 노드에서 E로 가기위해
    • 간선이 하나라면 -> 하나 추가
    • 간선이 두개라면 -> 괜찮음
  • 그 다음, 다음 노드들을 생각해보면
    • 간선이 하나라면 -> 뭐가 되든 하나 추가
    • 두개라면 -> 괜찮음
  • E를 제외한 모든 노드에서 간선이 1개인 경우에만 추가하면 됨
profile
newbieski

0개의 댓글