Huawei社の書面による質問には、「最後の少数の人々が知っています。」

グループにメッセージを転送する通信ソフトウェアでは、ほとんどそこに広がるのメッセージを作ることができます。既知の内部の人々のこれらのグループのそれぞれが、再びメッセージは、私はすべてのグループのすべての人を求めることができるが、一度に転送され、彼のグループの全てに再び転送され、m個のグループ、そのうちの一つ、彼が置かれているのグループに送信されたメッセージがあると仮定最後の数の人々が(メッセージ人を含む)メッセージを受信した後?メッセージの出力数は(10進整数出力に改行を追加しません)受信

説明を入力します。

最初のメッセージ名を送信

のグループ数m

グループ1人のメンバー名リスト

グループ名のリストの2人のメンバー

....

Mグループのメンバー名のリスト

英語名は、文字とスペースを含む文字列、文字数は100文字以内の最大の長さです。

Mは最大値が100を超えない、グループの進数の整数です。

グループのメンバーリストには、二つの名前の間にコンマで区切って、最大1個人名の名前が含まれています。

 

出力説明:

出力の最後の10進数は、メッセージを受け取ることができます。

 

例:

入力:

ジャック
3
ジャック、トム、アニー、ルーシー・
トム、ダニー
、ジャック、リリー

出力:

6

 

アイデア:

所有者名は、その後横断するBFSに従う統計最初のグループ番号(グループにのみジャックに注意したが、他のグループの場合には含まれていない、この時間は出力1であるべきです)

 

1の#include <iostreamの>
 2の#include <ベクトル> 
 3の#include <ビット/ STDC ++ H> 
 4  使って 名前空間STD。
5  
6ベクター< ストリング >プロ(ストリングSTR){
 7      ベクター< ストリング > RES。
8      int型のインデックス= 0 9      のためにint型 iは= 0 ; iはstr.sizeを()<; iは++ ){
 10          であれば(STR [I] == ' ' ){
 11             res.push_back(str.substr(インデックス、I- インデックス))。
12              インデックス= iが+ 1 ;
13          }
 14      }
 15      であれば(インデックス< str.size()){
 16          res.push_back(str.substr(インデックス))。
17      }
 18の     リターンRES。
19  }
 20  
21  INT メイン(){
 22      名;
23      一方(CIN >> 名){
 24          INT M。
25          CIN >> M。
26          
27          文字列CUR;
28          ベクトル<ベクトル< ストリング >> データ。
29          のためには、int型 = Iを0 ; iがmを<; iは++ ){ 
 30              CIN >> CURと、
31              data.push_back(PRO(CUR))。
32          }
 33          
34          地図< 文字列、ベクトル< INT >> 存在します。
35          
36          のためにint型 i = 0 ; iは++; iはdata.size()< ){
 37              のためのint型 J = 0 ; J <データを[I] .size(); J ++){
 38                  [データ[I] [J] .push_back(I)に存在し、                
39              } 
 40          }
 41          
42          キュー< INT > TEMP。         
43          のためには、int型 i = 0 ; iは、[名前] .size()が存在する<; iは++ ){
 44              temp.pushは([名前]が存在し、[I])。
45          }
 46          
47          ベクターは< INT >訪問(M、0 );
48          セット < 文字列 > のres; 
49          res.insert(名);    
50          
51          ながら(!temp.empty()){
 52              INT CUR = temp.front()。
53              temp.pop()。
54              [CUR] =訪問1 55              のためには、int型 i = 0 ; iが<データ[CUR] .size(); iは++ ){
 56                  のためのint型 J = 0 ; J <存在する[データ[CUR] [I] .size(); J ++ ){
 57が                     あれば(!訪問[存在する[データ[CUR] [I]、[J]]){
 58                          temp.push(存在する[データ[CUR] [I]、[J])。
59                     }                     
 60                  }                
 61                  res.insert(データ[CUR] [I])。
62              }
 63          }         
 64          COUT << res.size()。         
65      }     
 66 }

 

おすすめ

転載: www.cnblogs.com/liugl7/p/11391332.html