問題の説明
オイラー紙オフペンをしない指し、一度だけ図に各エッジを塗装することができ、ループの開始点に戻ることができます。オイラーがあれば今、マップ与えられた、頼みますか?
入力
テスト入力には、いくつかのテストケースが含まれています。各テストケースは、最初の2つの正の整数の列が与えられ、ノードN(1 <N <1000)の数とエッジMの数であり、Mは、その後縁に対応するM個の行は、各列は、正の整数の組が与えられ、どの2つのノードは、ストリップのエッジ(1からNまでのノード番号)と直接通信していません。Nは0入力接合である場合
、ビームは。
、ビームは。
出力
ライン当たり各テストケースの出力は、オイラー出力1、出力0は、そうでなければ存在する場合。
サンプル入力
3 3
1 2
1 3
2 3
3 2
1 2
2 3
0
サンプル出力
1
0
オイラー:いいえ図の決意状態に--- >>すべての点について、図通信が偶数であります
すべてのポイント0 +1、-1度、のうち、図の接続グラフ--- >>に存在決意条件
オイラー経路:なし決意状態図の接続グラフを--- >>すべての点について①は偶数であります
②ポイントの残りは偶数であり、そして2つだけの奇数度点(開始点、終了点)
全ての点0のため、図の接続グラフ--- >>①+1のうち、-1度を指向分析条件
②のみ2点の0ではない、1、-1
上記の条件が必要な大規模な条件、図のグラフのコミュニケーションを!
だから、決定することによって、この問題互いに素セットと通信するかどうか
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 const int型MAXN = 1E3 + 5。 int型D [MAXN]。 名前空間stdを使用。 int型のパー[MAXN]。 int型NUM [MAXN]。 ()INITを無効 { (私は++; iがMAXNを<I = 0をINT)するための [I] = I、NUM PAR [I] = 1。 } INT(INT X)を見つける { (!パー[X] = x)の場合は 額面[X] =(PARは、[X])を見つけます。 パーを返す[X]; } ボイド連合(int型のx、int型のY) { int型XX =検索(X) YY = INT(y)を見つけます。 IF(!= XX YY){ パー[XX] = YY。 NUM [YY] + = NUM [XX]。 } } int型のmain(){ int型N、M。 IOS :: sync_with_stdio(偽)。 一方、(1){ CIN >> N。 IF(N == 0)戻り0; cinを>>メートル。 その中に(); memsetの(D、0、はsizeof(d)参照)。 以下のために(; iがm <; I = 0 int型私は++は){ int型、B。 CIN >> A >> B; 連合(a、b)は、 D [A] ++; D [B] ++; } BOOL F = 1、G = 0。 以下のために(INT i = 1; iは= N <; iは++){ IF(D [i]は%2 == 1)F = 0。//存在奇数点 IF(NUM [I] == n)をG = 1。//表示连通 } もしCOUT(&& G F)<< "1" << ENDL。 他の裁判所未満<< "0" <<てendl; } 0を返します。 }