BOJ 16659 LED-led Paths
BOJ 16659 LED-led Paths
문제 내용
개의 정점과 개의 유향 간선을 갖는 사이클이 없는 그래프가 주어집니다. 각각의 간선을 RGB 중 한 가지 색으로 칠해서, 한 가지 색으로만 이루어진 최장 경로의 길이가 를 초과하지 않도록 하세요.
입력
첫 줄에는 와 가 주어집니다. (, )
다음 줄에 걸쳐서 유향 간선이 한 줄에 하나씩 주어집니다. 각 간선은 출발 정점 와 도착 정점 순서로 주어집니다. (, )
임의의 정점 쌍에 대해 두 정점을 직접 잇는 간선은 최대 한 개입니다.
출력
문제의 조건에 맞게 모든 간선을 아무 방법으로 색칠했을 때, 각 간선의 색깔을 입력에서 주어진 순서대로 한 줄에 하나씩 출력합니다.
문제 풀이
스포일러
먼저 주어진 DAG를 위상 정렬한 다음, 위상 정렬된 순서대로 정점들을 균일하게 개의 구간으로 나눠 봅시다.
그리고 구간의 번호가 바뀌는 간선들을 모두 한 가지 색(예를 들어 R)으로 색칠하면, 다음의 성질을 얻을 수 있습니다.
R로만 이루어진 경로의 길이는 최대 입니다. 각 구간에 순서대로 번호를 붙이면,R간선을 따라 이동할 때마다 무조건 구간의 번호가 증가하기 때문입니다.R간선을 모두 삭제한 그래프는 최대 개씩의 정점을 갖는 집합들로 나눠집니다.
마찬가지로 각각의 구간 내의 정점들을 다시 균일하게 개의 구간으로 나눠서 구간 번호가 바뀌는 간선은 G로, 나머지 간선은 B로 색칠할 수 있습니다.
이므로, 구간이 바뀌는 단위를 적당히 잡아서 실제로 칠하면 가능한 정답이 됩니다.
Last updated on