Prihlásenie Registrácia  

C - Cesty

Časový limit: 20s, Pamäťový limit: 64MiB

Programovacie jazyky: Pascal, C, C++, Java, C++0x, Python 3

Počet bodov: 1

[ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ]

Cesty v okolí Košíc sú v príšernom stave. Aj keď s ťažkosťami, no predsa ich ľudia denno denne používajú. Cestná sieť je vybudovaná tak, aby sa dalo dostať po cestách (cesta vedie medzi dvoma obcami) z každej obce do každej.

Župan sa konečne rozhodol túto situáciu riešiť. Vyčlenil na opravu všetkých ciest dostatočné množstvo peňazí. Rýchlo mu však došlo, že nemôže dať opravovať všetky cesty naraz (ak sa cesta opravuje, tak sa po nej nedá prejsť), pretože ľudí by dosť nahnevalo, keby sa nevedeli dostať k príbuzným, hlavne teraz na dušičky. Preto sa aspoň rozhodol dať opraviť maximálny počet ciest tak, aby sa ešte stále dalo prejsť z každej obce do každej.

Úloha

Pre danú cestnú sieť zistite, koľko maximálne ciest môže dať župan naraz opraviť a navrhnite aj jednu konkrétnu možnosť. Všetky cesty sú obojsmerné.

Vstup

Prvý riadok vstupu obsahuje 2 celé čísla N a M (2≤N≤500), (1≤M≤300000). Pre jednoduchosť sú mestá očíslované od 1 po N. Nasleduje M riadkov. Na každom riadku sa nachádzajú 2 rôzne celé čísla a,b (1≤a,bN)--koncové mestá danej cesty. Môžete predpokladať, že cestná sieť je súvislá. Medzi dvoma mestami môže viesť viacero ciest.

Výstup

Prvý riadok výstupu by mal obsahovať počet ciest, ktoré možno naraz opraviť (ozn. K). Nasledujúcich K riadkov by malo popisovať cesty, ktoré treba opraviť (jednu cestu na jednom riadku), ako dve medzerou oddelené čísla popisujúce koncové mestá danej cesty (môžu byť v opačnom poradí, ako boli vo vstupe).

Príklad

Vstup:

3 3
1 2
2 3 
3 1

Výstup:

1
1 3