CSES - Suunnat
  • 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$.