수열 a1,a2,…,an이 1부터 n까지의 정수를 하나도 빠짐없이 한 번씩 담고 있으면 이 수열을 순열이라고 한다.
정점의 순열 a1,a2,…,an이 방향 그래프의 위상 정렬이라는 것은, u에서 v로 가는 모든 방향 간선에 대해 순열에서 u가 v보다 앞에 온다는 뜻이다.
1≤i<m인 모든 i에서 ai=bi이고 am<bm인 m이 존재하면, 순열 a1,a2,…,an은 순열 b1,b2,…,bn보다 사전순으로 작다.
사이클이 없는 방향 그래프가 주어진다. 이 그래프에 방향 간선을 최대 k개까지 추가할 수 있고, 추가한 뒤에도 사이클이 없어야 한다. 이렇게 만든 그래프에서 사전순으로 가장 작은 위상 정렬을 T라고 하자. T가 사전순으로 가장 커지도록 추가할 간선을 고른다.
첫째 줄에 정수 n, m, k가 주어진다. 차례대로 정점 개수, 원래 그래프의 방향 간선 개수, 추가할 수 있는 방향 간선 개수이다 (1≤n≤100000, 0≤m,k≤100000).
다음 m개 줄에는 정수 ui, vi가 주어지며, ui에서 vi로 가는 방향 간선을 뜻한다 (1≤ui,vi≤n). 같은 간선이 여러 번 주어질 수 있다. 주어진 그래프에는 사이클이 없다.
첫째 줄에 위에서 정한 수열 T를 정수 n개로 출력한다. 수는 공백 하나로 구분한다.
둘째 줄에 정수 x를 출력한다. 그래프에 사이클이 없으면서 사전순으로 가장 작은 위상 정렬이 정확히 T가 되도록 만드는 데 추가해야 하는 방향 간선 개수의 최솟값이다. x는 항상 k 이하이다.