leximin

Time limit: 2s Memory limit: 128MB Input: Output:

Se dă NN, MM, KK și un graf orientat aciclic (DAG) format din NN noduri (numerotate de la 11 la NN) și MM muchii. Să se afle drumul minim lexicografic care se termină în nodul KK.

Un șir a1 a2  apa_1 \ a_2 \ \dots \ a_p este mai mic lexicografic decât șirul b1 b2  bqb_1 \ b_2 \ \dots \ b_q dacă și numai dacă:

  1. p<qp < q și a1=b1a_1 = b_1, a2=b2a_2 = b_2, ap=bp\dots a_p = b_p sau
  2. Există o valoare pospos astfel încât 1posmin(p,q)1 \leq pos \leq min(p, q) și a1=b1a_1 = b_1, a2=b2a_2 = b_2, \dots, apos1=bpos1a_{pos-1} = b_{pos-1}, iar apos<bposa_{pos} < b_{pos}.

Date de intrare

Pe prima linie se găsesc trei numere naturale, NN, MM și KK, reprezentănd numărul de noduri, numărul de muchii și nodul în care se va termina drumul. Următoarele MM linii conțin câte două numere uu si vv, semnificând că există muchie de la nodul uu la nodul vv.

Date de ieșire

Pe prima linie se află numărul LL, reprezentând lungimea drumului minim lexicografic. Pe a doua linie, se află un șir de lungime LL, reprezentând drumul minim lexicografic.

Restricții și precizări

  • 1N,M500 0001 \leq N, M \leq 500 \ 000
  • 1u,vN1 \leq u, v \leq N, uvu \neq v pentru fiecare muchie

Exemplul 1

stdin

9 11 6
4 1
6 9
5 3
3 9
1 5
3 6
2 9
8 9
4 8
7 8
7 4

stdout

4
1 5 3 6

Log in or sign up to be able to send submissions!