BOJ 16659 LED-led Paths

BOJ 16659 LED-led Paths

문제 링크:

문제 내용

VV개의 정점과 EE개의 유향 간선을 갖는 사이클이 없는 그래프가 주어집니다. 각각의 간선을 RGB 중 한 가지 색으로 칠해서, 한 가지 색으로만 이루어진 최장 경로의 길이가 4242를 초과하지 않도록 하세요.

입력

첫 줄에는 VVEE가 주어집니다. (2V50  0002 \le V \le 50\;000, 1E200  0001 \le E \le 200\;000)

다음 EE줄에 걸쳐서 유향 간선이 한 줄에 하나씩 주어집니다. 각 간선은 출발 정점 aa와 도착 정점 bb 순서로 주어집니다. (1a,bV1 \le a, b \le V, aba \neq b)

임의의 정점 쌍에 대해 두 정점을 직접 잇는 간선은 최대 한 개입니다.

출력

문제의 조건에 맞게 모든 간선을 아무 방법으로 색칠했을 때, 각 간선의 색깔을 입력에서 주어진 순서대로 한 줄에 하나씩 출력합니다.

문제 풀이

스포일러

먼저 주어진 DAG를 위상 정렬한 다음, 위상 정렬된 순서대로 정점들을 균일하게 kk개의 구간으로 나눠 봅시다. 그리고 구간의 번호가 바뀌는 간선들을 모두 한 가지 색(예를 들어 R)으로 색칠하면, 다음의 성질을 얻을 수 있습니다.

  • R로만 이루어진 경로의 길이는 최대 k1k-1입니다. 각 구간에 순서대로 번호를 붙이면, R 간선을 따라 이동할 때마다 무조건 구간의 번호가 증가하기 때문입니다.
  • R 간선을 모두 삭제한 그래프는 최대 Vk\left\lceil \frac{V}{k} \right\rceil개씩의 정점을 갖는 집합들로 나눠집니다.

마찬가지로 각각의 구간 내의 정점들을 다시 균일하게 kk개의 구간으로 나눠서 구간 번호가 바뀌는 간선은 G로, 나머지 간선은 B로 색칠할 수 있습니다.

403>50  00040^3 > 50\;000이므로, 구간이 바뀌는 단위를 적당히 잡아서 실제로 칠하면 가능한 정답이 됩니다.

Last updated on