2人の間にゲームをプレイするために、Sishaにそれぞれをキャッチアップするための2つの間の卓球の試合をプレイする人々のグループ、。
:ゲームのルールは以下のとおりである
ビートB場合は、BとCを破ったが、その後見つけ、AとCの間には競争が行われていない、AはCを打つことができなければなりません
ビートB、B場合とC、及び、Cを破り、Aを倒し、その後、A、B、Cの3つはチャンピオンになることはできません。
このルール、ノーコンテストサイクルによると、チャンピオンを決定することができます。あなたの仕事は、実際にチャンピオンを生成するかどうかを判断するために、いくつかのフィールドのモトリー・クルーの後、ゲームプレイヤーのグループに直面することです。
:ゲームのルールは以下のとおりである
ビートB場合は、BとCを破ったが、その後見つけ、AとCの間には競争が行われていない、AはCを打つことができなければなりません
ビートB、B場合とC、及び、Cを破り、Aを倒し、その後、A、B、Cの3つはチャンピオンになることはできません。
このルール、ノーコンテストサイクルによると、チャンピオンを決定することができます。あなたの仕事は、実際にチャンピオンを生成するかどうかを判断するために、いくつかのフィールドのモトリー・クルーの後、ゲームプレイヤーのグループに直面することです。
入力入力グループは、n個のゲームのプレイヤーの結果に続いて、いくつかの選手、整数n(nは<1000)と各選手のグループの開始を、含まれている、(スペース間隔で)名前のゲーム結果に選手のペアは、前者が後者を克服しました。nが0である場合、それは、入力の終了を示します。
選手たちのグループごとに出力、あなたはそれがチャンピオン、出力「はい」行で、行内のそれ以外の場合は出力「いいえ」を生み出す判断した場合。
サンプル入力
3 アリスボブ ・スミスジョン・ アリス・スミス 5 交流 のCD ドは なる 広告 0
サンプル出力
はい ません
この問題は発生したタイトルは、限り、最初のポイントは、トポロジカルソートのように排出することができるように、それは限り、第一度ポイントが0であると言うことであるかどうかを決定し、それだけが必要です。かどうかは、行の残りのポイントは必要ないかもしれません。(AHピット!!)
方法1(列番号の代わりに使用することを学びました)
#include <iostreamの> する#include <cstdioを> する#include <地図> の#include <ベクトル> の#include <CStringの> 使用して 名前空間STDを、 マップ < 文字列、int型 > 融点; ベクター < INT > VEの[ 100000 ]。 int型 では [ 100000 ]。 INT のmain(){ int型のn; 一方、(CIN >> N && N){ int型の POS = 0 。 文字列、B; int型のA1、B1;で、0、はsizeof(中))。 mp.clear(); 以下のために(int型 i = 1 ; iが++; iが<= N ){ CIN >> A >> B。 もし(mp.find(A)== mp.end()){ MP [A] = POS。 A1 = POS; POS ++ ; } 他{ A1 = MP [A]。 } であれば(mp.find(B)== mp.end()){ MP [B] = POS。 B1 = POS; POS ++ ; } 他{ B1 = MP [B]。 } [A1] .push_back(B1)まし。 で [B1] ++ ; } INT ANS = 0 。 以下のために(int型私= 0 ; iがPOSを<; Iは++ ){ 場合(で、[I] == 0 ){ ANS ++ 。 } } 場合(ANS == 1 ){ プット(" はい" ); } 他{ プット(" なし" ); } } 戻り 0 ; }
必要であれば、残りの要素は、また、行にトポロジカルソートを行ってもよいです
方法2(ダイレクトマップ)タイトルの意味に従っては、勝者はそれぞれのゲームに勝つだけです必要があります
書式#include <iostreamの> の#include <cstdioを> する#include <地図> 使用して 、名前空間STD; 地図 < 文字列、int型 > MP1、MP2; // MP1勝者を記録し、MP2故障記録するために使用する 地図を < 文字列、int型 > ITをイテレータ::; int型のmain(){ int型N-、 一方(N-CIN >> && N-){ mp1.clear(); mp2.clear(); 文字列S1、S2; のため(INT I = 1 ; I <= N- ; I ++ ){ CIN >> S1S2; MP1 [S1] ++ ; MP2 [S2] ++ ; } INT ANS = 0 。 以下のためには、(それがmp1.beginを()=;!それ= mp1.endを();それ++ ){ 場合(MP2 [IT->第] == 0 ){ ANS ++ 。 } } もし(ANS == 1 ){ プット(" はい" ); } 他{ プット(「なし」)。 } } リターン 0 ; }