사전순 최소 위상 정렬 최대화
시간 제한2초메모리 제한256 MB
최대 k개 간선을 DAG에 추가해 사전 순으로 가장 작은 위상 정렬을 최대한 크게 만들고 그 순서와 최소 추가 개수를 출력합니다.
문제
수열 이 1부터 까지의 정수를 하나도 빠짐없이 한 번씩 담고 있으면 이 수열을 순열이라고 한다.
정점의 순열 이 방향 그래프의 위상 정렬이라는 것은, 에서 로 가는 모든 방향 간선에 대해 순열에서 가 보다 앞에 온다는 뜻이다.
인 모든 에서 이고 인 이 존재하면, 순열 은 순열 보다 사전순으로 작다.
사이클이 없는 방향 그래프가 주어진다. 이 그래프에 방향 간선을 최대 개까지 추가할 수 있고, 추가한 뒤에도 사이클이 없어야 한다. 이렇게 만든 그래프에서 사전순으로 가장 작은 위상 정렬을 라고 하자. 가 사전순으로 가장 커지도록 추가할 간선을 고른다.
입력
첫째 줄에 정수 , , 가 주어진다. 차례대로 정점 개수, 원래 그래프의 방향 간선 개수, 추가할 수 있는 방향 간선 개수이다 (, ).
다음 개 줄에는 정수 , 가 주어지며, 에서 로 가는 방향 간선을 뜻한다 (). 같은 간선이 여러 번 주어질 수 있다. 주어진 그래프에는 사이클이 없다.
출력
첫째 줄에 위에서 정한 수열 를 정수 개로 출력한다. 수는 공백 하나로 구분한다.
둘째 줄에 정수 를 출력한다. 그래프에 사이클이 없으면서 사전순으로 가장 작은 위상 정렬이 정확히 가 되도록 만드는 데 추가해야 하는 방향 간선 개수의 최솟값이다. 는 항상 이하이다.