- Time limit: 1.00 s
- Memory limit: 512 MB
Annettuna on suuntaamaton verkko, jossa on n solmua ja m kaarta.
Sinun tulee valita jokaiselle kaarelle suunta niin, että tuloksena on suunnattu verkko. Valinnan jälkeen saat jokaisen solmun x kohdalla sakkoa |\textrm{in}(x)-\textrm{out}(x)|, missä \textrm{in}(x) on solmuun tulevien kaarten määrä ja \textrm{out}(x) on solmusta lähtevien kaarten määrä.
Tehtäväsi on valita suunnat niin, että yhteissakko on mahdollisimman pieni. Miten menettelet?
Syöte
Syötteen ensimmäisellä rivillä on kaksi kokonaislukua n ja m: solmujen ja kaarten määrä. Solmut on numeroitu 1,2,\dots,n.
Tämän jälkeen syötteessä on m riviä, jotka kuvaavat kaaret. Jokaisella rivillä on kaksi kokonaislukua a ja b: solmujen a ja b välillä on kaari.
Voit olettaa, että jokainen kaari yhdistää kaksi eri solmua ja jokaisen kahden solmun välillä on enintään yksi kaari.
Tuloste
Tulosta ensin yksi kokonaisluku: pienin mahdollinen yhteissakko.
Tulosta sitten m riviä, jotka kuvaavat kaarten suunnat ratkaisussasi. Jokainen rivi tarkoittaa, että kaari alkaa vasemmasta solmusta ja päättyy oikeaan solmuun.
Voit tulostaa minkä tahansa kelvollisen ratkaisun ja kaaret missä tahansa järjestyksessä.
Rajat
- 1 \le n \le 2 \cdot 10^5
- 1 \le m \le 5 \cdot 10^5
Esimerkki
Syöte:
4 4 1 2 2 3 1 3 3 4
Tuloste:
2 3 4 1 3 3 2 2 1
Selitys: Ratkaisussa solmujen 1 ja 2 sakko on 0 ja solmujen 3 ja 4 sakko on 1, joten kokonaissakko on 1+1=2.