[Cf741C] всю ночь партия Арпа и бесшумный ввод Мердад в

Прямой порядок 2i-1 и 2i положения не являются идентичными, что эквивалентно 2n сторон, подвергают крашения двудольного графа (фиги некоторый нечетный этот цикл не существует).

Пусть задан п штуки отношения класса сторона, 2i. 1- и 2i стороны B сторона класса, путь должен быть найден AB поочередно (как А / В конце не должен быть А / В отправной точке), то кольцо обязательно равные количества в боковой и B стороны, то есть фрикционное кольцо.

1 #include <. Бит / STDC ++ H>
 2 с  использованием  пространства имен STD;
3  #define N 200005
 4  структура джи {
 5      INT NEX, чтобы;
6 } край [N << 1 ];
7  INT Е, п, а [N], глава [Н], х [N], у [Н];
8  недействительными добавить ( INT х, INT у) {
 9      ребро [Е] = .nex головы [х];
10      ребро [Е] .to = у;
11      головки [х] = Е ++ ;
12  }
 13  недействительного ДФС ( INT к,INT ш) {
 14 ,      если ([к]> = 0 ) возврата ;
15      [к] = ш;
16      для ( INT I = глава [к]; я = - 1 ; г = ребро [I] .nex) ДФС (край [я] .to, ш ^ 1 );
17  }
 18  INT Основной () {
 19      зсапЕ ( " % d " , & п);
20      MemSet (голова, - 1 , SizeOf (головка));
21      MemSet (а, - 1 , SizeOf (а));
22      для (Int я = 1 ; г <= п; я ++ ) {
 23          Scanf ( " % D% D " , & х [г], & у [I]);
24          добавить (х [I], у [I]);
25          добавить (у [I], х [I]);
26          добавить ( 2 * i - 1 , 2 * я);
27          добавить ( 2 * я, 2 * i - 1 );
28      }
 29      для ( INT I = 1 ; г <= 2 * п; я ++ )
 30 ,          если (а [я] == - 1) ДФС (я, 0 );
31      для ( INT I = 1 ; г <= п; я ++) Е ( " % d% d \ п " , а [х [I]] + 1 , а [у [I]] + 1 );
32 }
Просмотр кода

 

рекомендация

отwww.cnblogs.com/PYWBKTDA/p/11254620.html