その他の質問Atcoder
AGC014D
効果:彼らは白のドットに囲まれて、最終的な白い斑点がある場合は、白盛は結果を求めて、黒と白の木の染色(白上側の手)にターンを取ります
ソリューション:
- Baibi盛ポイントときに、2枚の以上の隣接する葉
- 一つだけの葉、それに隣接し、これが削除された離れた場合(白色点は、境界線の役割の葉に相当します)
1の#include <ビット/ STDC ++ H> 2 の#define(私は++; iが=(B)<I =(A)がINTレジスタ)のための(I、B)FOR 3 の#define(I、B用の)のための(レジスタINT I =(A); I> =(B); i--) 4 の#define MEM(i、j)はmemsetの(I、J、はsizeof(I)) 5 の#define GO(U)のために(登録INT J = F [U]; J = - 1;!J = NXT [J]) 6 の#define Fiの第 7 の#define SE第 8 の#define PII対<整数、整数> 9 の#define MPはmake_pair 10を 使用して 名前空間はstd; 11 typedefの長い 長いLL。 12 CONSTの INT N = 1E5 + 5 。 13 int型N、A、B、LF [N]、D [N]、RT。 14 INT TOT = 0、[N] F、NXT [N << 1 ]。 15 構造体E 16 { 17 のint U、V。 18 } E [N << 1 ]。 19インラインボイド追加(INT U、INT V) 20 { 21 TOT ++ 。 22 NXT [TOTは] = F [U]を。 23 F [U]は= TOTを、 24 E [TOT =(E){U、V}。 25 リターン; 26 } 27インラインint型リード() 28 { 29 INT X = 0、F = 1 。 30 チャー C = GETCHAR()。 31 一方、(C < ' 0 ' || C> ' 9 '){ もし、(C == ' - ')、F = - 1 ; C = GETCHAR();} 32 ながら(C> = ' 0 ' && C <= ' 9 '){X =(X << 1)+(X << 3)+ C- ' 0 ' ; C = GETCHAR();} 33 リターンのF *のX。 34 } 35インラインボイド書き込み(INT X) 36 { 37 であれば(X < 0)のputchar(' - ')、X = - X。 38 であれば(X> 9)書き込み(X / 10 )。 39 のputchar(Xの%10 + ' 0 ' )。 40 リターン; 41 } 42インラインボイドはい(){のprintf(" 最初の\ n ");出口(0 );} 43インラインボイド無し(){のprintf(" 第二の\ n ");出口(0 );} 44インラインINT DFS (INT U、INT FA) 45 { 46 のint = CNT 0 。 47 GO(U) 48 { 49 のint V = E [J] .V。 50 場合(== FA V)継続; 51 CNT + = DFS(V、U)。 52 } 53 であれば(CNT> 1 )はい(); 54 リターン CNT ^ 1 。 55 } 56 のint main()の 57 { 58 MEM(F、 - 1 )。 59 N = )(読み取ります。 60 であれば(N == 2 )いいえ(); 61 であれば(N == 1 )はい(); 62 FOR(I、1、N- 1)A =読み取る()、B =(読み取り)、追加(a、b)は、(B、A)、D [A] ++を追加し、D [B] ++ ; 63 (I、FOR 1、N)LF [I] =(D [I] == 1 )。 64 (I、FOR 1、N)であれば {RT = I(LF [I]!)。ブレーク;} 65 場合(DFS(RT、0 ))はい(); 66 なし(); 67 リターン 0 ; 68 }