Antのトリップ
時間制限:2000/1000 MS(Javaの/その他)メモリ制限:32768分の32768 K(Javaの/その他)
の合計提出(S):5501受理提出(S):2146
問題の説明
町を結ぶMの道路はAntの国は、N towns.Thereで構成されています。
Antのトニーは、一緒に彼の友人で、国のすべての部分を通過したいと考えています。
彼らはすべての道路を訪問する予定で、すべての道路が正確な1 time.Howeverのために訪問しなければならない、それは彼らがいくつかのグループにすべての人々を分割しようとしているpeople.Soの一つのグループだけのために不可能なミッションとすることができ、それぞれが開始することができ異なるでtown.Nowトニーはニーズが彼らの目標を達成するために形成することをアリの少なくともグループが何であるかを知りたがっています。
Antのトニーは、一緒に彼の友人で、国のすべての部分を通過したいと考えています。
彼らはすべての道路を訪問する予定で、すべての道路が正確な1 time.Howeverのために訪問しなければならない、それは彼らがいくつかのグループにすべての人々を分割しようとしているpeople.Soの一つのグループだけのために不可能なミッションとすることができ、それぞれが開始することができ異なるでtown.Nowトニーはニーズが彼らの目標を達成するために形成することをアリの少なくともグループが何であるかを知りたがっています。
入力
入力は複数のcases.Testケースは、いくつかの空白行で区切られて含まれています。N(1 <= N <= 100000)、M(0 <= M <= 200000)、整数2と各テストケースの開始は、N個の町およびM線によってアリCountry.FollowedにおけるM道路が存在することを示し、各行が含ま町Aおよび町b.No 2本の道路を結ぶ道路が存在することを示す二つの整数、B、(1 <= B <= N)が同じになり、同じ町を結ぶない道路は存在しません。
出力
各テストケース、その目標を達成するために形成する必要が出力以上のグループのために。
サンプル入力
3 3 1 2 2 3 1 2 3 4 1 2 3 4
サンプル出力
1 2
トピック効果と分析
オイラー経路、まず、図の互いに素なセットメンテナンス通信、各図のための通信と、全ての辺に必要なストロークの最小限の数を移動しようとしている。、すべての偶数の全ての点は、オイラー経路を表す場合一点のみ場合、ストロークが必要とされない、必要なストロークの奇数と点について特異点/ 2の数であります
#include <ビット/ STDC ++ H> 使用して名前空間STDを、int型の F [ 100005 ]、度[ 100005 ]、G [ 100005 ]、J [ 100005 ]、ANSS、CNT、N、M。INT findf(INT X) { リターン?X == F [x]はx:F [X] = findf(F [X])。 } ボイド hebing(int型、int型B)を { INT FA = findf()。 INT FB = findf(B)。 もし(!FA = FB) { F [FA] = FB。 } } INT メイン() { 一方(CIN >> N >> M) { ANSS = 0 。 memset(°、0、はsizeof (度))。 memsetの(G、0、はsizeof (G))。 memsetの(j、0、はsizeof (J))。 以下のために(INT iが= 1 ; I <= N; I ++ ) F [I] = I。 CNT = 0 ; 一方、(M-- ) { int型、A、B CIN>> >> B; (a、b)はhebing。 度[A] ++ ; 度[B] ++ ; } ため(INT iは= 1 ; I <= N; I ++ ) { 場合(findf(I)== I) { G [CNT ++] = I。 } もし(DEG [I]%2 == 1 ) { J [findf(I)] ++ ; } } のための(INT I = 0; I <CNT; I ++ ) { 場合(DEG [G [I]] == 0 ) 続けます。 もし(J [G [I]] == 0 ) ANSS ++ 。 他 ANSS + = J [G [I] / 2 。 } COUT << ANSS << ENDL。 } }