[cf741C]アルパの一晩のパーティーとMehrdadのサイレント入り

直接注文2I-1 および2I の位置が同一ではない、の等価 2N 二部グラフの染色に供側面は、(図特定の奇数このループは存在しません)。

所与の仮定のn 個の関係、クラス側2I。1-及び2I側である Bのクラスの側、パスが見つけなければならないABを交互に(AS A / Bの端部があってはならないA / Bは、出発点)その後、リングは、必ずしも同じ量である側とB 側、即ち摩擦リング。

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  の#define N 200005
 4  構造体JI {
 5      int型のNEX、であり;
6 }エッジ[N << 1 ]。
7  int型E、N、[N]、ヘッド[N]、X [N]、Y [N]。
8  ボイド追加(int型のx、int型のY){
 9      エッジ[E] .nex = 頭部[X]。
10      エッジ[E] .TO = Y。
11      頭[X] = E ++ 12  }
 13  空隙 DFS(int型 K、int型SH){
 14      であれば([K]> = 0を返します15      [k]は= SHと、
16      のためにint型!; I = - I =頭[k]を1 ; I =エッジ[I] .nex)DFS(エッジ[I] .TO、SH ^ 1 )。
17  }
 18  INT メイン(){
 19      のscanf(" %d個"、&N)
20      のmemset(ヘッド、 - 1はsizeof (ヘッド))。
21      のmemset( - 1はsizeof (a)参照)。
22      のためにint型 i = 1 ; iが<= N; iが++ ){
 23          のscanf(" %d個の%dを"&X [i]は、&Y [I])。
24          追加(X [i]は、Y [I])。
25          追加(Y [i]は、X [I])。
26          追加(2 * I- 12 * I)。
27          追加(2 * I、2 * I- 1 )。
28      }
 29      のためのint型 i = 1 ; iが<= 2 I ++; * N 30          であれば - ([I] == 1)DFS(I、0 );
31      のためには、int型 i = 1 ; iが<= N; iが++)のprintf(" %D%D \ n "、[X [I] + 1、+ [I]、Y [] 1 )。
32 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/PYWBKTDA/p/11254620.html