trasee

Time limit: 0.02s Memory limit: 16MB Input: trasee.in Output: trasee.out

Fiindcă nu m-am calificat la ONI, am vacanţă de primăvară. Am luat harta rutieră a ţării şi am marcat nn oraşe pe care le consider interesante şi merită vizitate. Am numerotat cele nn oraşe de la 11 la nn. Oraşul în care locuiesc este numerotat cu xx.

Vacanţa nu este lungă, aşa că am hotărât că aş putea vizita exact kk oraşe situate pe un traseu care respectă simultan următoarele condiţii (numim un astfel de traseu valid):

  1. Traseul porneşte din oraşul în care locuiesc (oraşul xx).
  2. Între oricare două oraşe consecutive de pe traseu trebuie să existe un drum direct (drum care nu trece prin alte oraşe).
  3. Traseul trece prin exact kk oraşe distincte.
  4. Pentru orice oraş yy de pe traseu, distanţa (numărul de drumuri directe parcurse) pe traseul respectiv de la oraşul xx la oraşul yy (exprimată în număr de drumuri directe parcurse pe traseu) este minimă (adică nu există un alt traseu pe hartă de la xx la yy având lungime strict mai mică).

Două trasee valide sunt considerate disjuncte dacă ele nu conţin un acelaşi drum direct.

Cerinţă

Cum eu nu m-am calificat la ONI, scrieţi un program care să mă ajute să determin numărul maxim de trasee valide disjuncte.

Date de intrare

Fişierul de intrare trasee.in conţine pe prima linie patru numere naturale nn, mm, xx şi kk separate prin câte un spaţiu, care reprezintă numărul de oraşe, numărul de drumuri directe dintre oraşe, numărul oraşului în care locuiesc şi respectiv numărul de oraşe aflate pe un traseu. Următoarele mm linii conţin cele mm drumuri directe de pe hartă, câte un drum pe o linie. Fiecare drum direct este specificat prin două numere naturale distincte cuprinse între 11 şi nn, separate printr-un spaţiu, reprezentând oraşele conectate de drumul respectiv.

Date de ieșire

Fişierul de ieşire trasee.out va conţine o singură linie pe care va fi scris numărul maxim de trasee valide disjuncte.

Restricții și precizări

  • 1n2001 \leq n \leq 200
  • 1xn1 \leq x \leq n
  • 1kn1 \leq k \leq n
  • Între două oraşe poate exista cel mult un drum direct. Drumurile sunt bidirecţionale.

Exemplu

trasee.in

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

trasee.out

3

Explicație

Oraşul de plecare este oraşul 11. Există patru trasee valide care trec prin exact 33 oraşe, plecând din 11 (132,135,147,1671-3-2, 1-3-5, 1-4-7, 1-6-7). Numărul maxim de trasee valide disjuncte este 33. O soluţie ar putea fi 1321-3-2, 1471-4-7, 1671-6-7.

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