Time limit: 0.03s
Memory limit: 16MB
Input: graf.in
Output: graf.out
Se ştie că într-un graf neorientat conex, între oricare două vârfuri există cel puţin un lanţ iar lungimea unui lanţ este egală cu numărul muchiilor care-l compun. Definim noţiunea lanţ optim între două vârfuri şi ca fiind un lanţ de lungime minimă care are ca extremităţi vârfurile şi . Este evident că între oricare două vârfuri ale unui graf conex vom avea unul sau mai multe lanţuri optime, depinzând de configuraţia grafului.
Cerinţă:
Fiind dat un graf neorientat conex cu vârfuri etichetate cu numerele de ordine şi două vârfuri ale sale notate şi (), se cere să scrieţi un program care determină vârfurile care aparţin tuturor lanţurilor optime dintre şi .
Date de intrare:
Fişierul graf.in
conţine
- pe prima linie patru numere naturale reprezentând: (numărul de vârfuri ale grafului), (numărul de muchii), şi (cu semnificaţia din enunţ).
- pe următoarele linii câte două numere naturale nenule ( , pentru ) fiecare dintre aceste perechi de numere reprezentând câte o muchie din graf.
Date de ieşire:
Fişierul graf.out
va conţine
- pe prima linie, numărul de vârfuri comune tuturor lanţurilor optime dintre şi ;
- pe a doua linie, numerele corespunzătoare etichetelor acestor vârfuri, dispuse în ordine crescătoare; între două numere consecutive de pe această linie se va afla câte un spaţiu.
Restricţii:
- pentru din teste
Exemple
graf.in
6 7 1 4
1 2
1 3
1 6
2 5
3 5
5 6
5 4
graf.out
3
1 4 5
graf.in
3 2 1 3
1 2
3 1
graf.out
2
1 3