冬Day61:Words-オイラー+互いに素セットにHDU1116プレイ

トピックリンク:

 

質問の意味:

単語の最後の文字と次の単語の最初の文字を分析することと同じです

 

直接の暴力WA

 

ACコード:

1の#include <iostreamの>
 2の#include <stdio.hの>
 3の#include < 文字列・H>
 4の#include <ベクトル>
 5の#include <アルゴリズム>
 6の#include <キュー>
 7  使って 名前空間STDを、
8 typedefの長い 長いLL。
9  
10  のconst  int型 N = 30 11  ブールブック[N]。
12  のint F [N]  [N]、アウト[N]。
13  チャー S [ 1100 ]。
14 
15  INT GETF(INT X)
 16  {
 17      であれば(F [X] == X)
 18          リターンX。
19      リターン F [X] = GETF(F [X])。
20  }
 21  
22  空隙マージ(int型のx、int型のY)
 23  {
 24      INT T1 = GETF(X)。
25      INT T2 = GETF(Y)。
26      F [T2] = T1。
27  }
 28  
29  ボイドのinit()
 30  {
 31     memsetの(書籍、0はsizeof (書籍));
32      (のmemset 0はsizeof))。
33      のmemset(うち0はsizeofアウト))。// 、アウト一定记得清空で
34      INT iは= 0 ; I < 26 ; I ++ 35          F [I] = I。
36  }
 37  
38  のint main()の
 39  {
 40      のint T、N。
41      のscanf(" %dの"、&T)。
42      一方(t-- 43      {
 44          のinit();
45          のscanf(" %d個"、&N)
46          のためにINT iは= 1 ; iが<= N; I ++ 47          {
 48              のscanf(" %sは" 、S)。
49              INT LEN = STRLEN(S)。
50              INT X = S [ 0 ] - ' '、Y = S [len- 1 ] - ' ' 51             マージ(X、Y)
52  [Y] ++、アウト [X] ++ ;
53              本の[X] = 1、書籍[Y] = 1 54         }
 55 INT = W 0、X = 0、Y = 0、Z = 0 56 のためにINT iが= 0 ; I < 26 ; I ++ 57         {
 58 であれば(ブック[I] && F [i]が== I)
 59                                                                ++ワット;
60          }
 61          であれば(> = W 2 62              のprintf(" ドアを開くことができない\ N。" );
63          他の
64          {
 65              のためのint型私は= 0 ; I < 26 ; I ++ 66              {
 67                  であれば(ブック[I])を
 68                  {
 69                      であれば、[I] =!アウト[i])と
 70                          のx ++ ;
71                     もし [I] - アウト [I] == 1 72                          Y ++ 73                      であればアウト [I] -  [I] == 1 74                          Z ++ 75                  }
 76              }
 77              であれば(x == 0 78                  のprintf(" 順序が可能である\ N。" );
79              他の 場合(X == 2 && Y == 1 && Y == Z)
 80                 printf(" 発注が可能である\ nは。" );
81              他の
82                  のprintf(" ドアを開くことができません\ n個。" );
83          }
 84      }
 85      リターン 0 86 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/OFSHK/p/12601642.html