Középpont (hálózat középpontja)

Egy kommunikációs hálózat eszközökből és az őket összekötő kétirányú vezetékekből áll. Az eszközök egyikét a hálózat középpontjának jelöljük ki. A középpontnak bármely eszköztől indulva elérhetőnek kell lennie egy vagy több kommunikációs vonal felhasználásával. A megvalósított hálózat nem garantálja a középpont elérését.

Feladat:

Írj programot, amely minimális számú új kommunikációs vonal létrehozásával elérhetővé teszi a középpont elérését bármely más eszközből. Emellett a program adja meg az új kapcsolatok végpontjait!

Bemenet:

A bemeneti állomány néhány tesztesetet tartalmaz, amelyek hálózatot írnak le. Minden teszteset első sora három egészet, az N K és M értékét tartalmazza. Az N (1<=N<=1000) a hálózati eszközök számát adja meg, a K (1<=K<=N) a kijelölt középpont sorszáma és az M (1<=M<=5000) a kommunikációs kapcsolatok számát adja meg. Az ezt követő M sor mindegyikében egy-egy a, b számpár áll, ahol (1<=a, b<=N) egy kommunikációs kapcsolat két végpontja. A 0 0 0 sor zárja a bemeneti állományt.

Kimenet:

A kimenet tesztesetenként két sort tartalmaz. Az első sor egyetlen U egész számot tartalmaz, amely a szükséges kommunikációs vonalak számát adja meg. A következő sor U számpárt tartalmaz, amelyet az a, b egészek alkotnak, egy-egy kommunikációs csatorna végpontjait adják meg. Ha az U értéke 0, akkor a következő sornak üresnek kell lennie.

Példa:

centre.in

centre.out

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

0

 

2        7 1 8 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(ACM SZTE csapatverseny 1999)