사전순 최소 위상 정렬 최대화

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

수열 a1,a2,,ana_1, a_2, \dots, a_n이 1부터 nn까지의 정수를 하나도 빠짐없이 한 번씩 담고 있으면 이 수열을 순열이라고 한다.

정점의 순열 a1,a2,,ana_1, a_2, \dots, a_n이 방향 그래프의 위상 정렬이라는 것은, uu에서 vv로 가는 모든 방향 간선에 대해 순열에서 uuvv보다 앞에 온다는 뜻이다.

1i<m1 \le i < m인 모든 ii에서 ai=bia_i = b_i이고 am<bma_m < b_mmm이 존재하면, 순열 a1,a2,,ana_1, a_2, \dots, a_n은 순열 b1,b2,,bnb_1, b_2, \dots, b_n보다 사전순으로 작다.

사이클이 없는 방향 그래프가 주어진다. 이 그래프에 방향 간선을 최대 kk개까지 추가할 수 있고, 추가한 뒤에도 사이클이 없어야 한다. 이렇게 만든 그래프에서 사전순으로 가장 작은 위상 정렬을 TT라고 하자. TT가 사전순으로 가장 커지도록 추가할 간선을 고른다.

입력

첫째 줄에 정수 nn, mm, kk가 주어진다. 차례대로 정점 개수, 원래 그래프의 방향 간선 개수, 추가할 수 있는 방향 간선 개수이다 (1n1000001 \le n \le 100\,000, 0m,k1000000 \le m, k \le 100\,000).

다음 mm개 줄에는 정수 uiu_i, viv_i가 주어지며, uiu_i에서 viv_i로 가는 방향 간선을 뜻한다 (1ui,vin1 \le u_i, v_i \le n). 같은 간선이 여러 번 주어질 수 있다. 주어진 그래프에는 사이클이 없다.

출력

첫째 줄에 위에서 정한 수열 TT를 정수 nn개로 출력한다. 수는 공백 하나로 구분한다.

둘째 줄에 정수 xx를 출력한다. 그래프에 사이클이 없으면서 사전순으로 가장 작은 위상 정렬이 정확히 TT가 되도록 만드는 데 추가해야 하는 방향 간선 개수의 최솟값이다. xx는 항상 kk 이하이다.