1967年、アメリカの有名な社会学者スタンレー・ミルグラムは、「スモールワールド現象(スモールワールド現象)」効果に有名な仮説を提案している、ほとんどの任意の二つの見知らぬ人の真ん中で彼の理論はまた、「6次の隔たり」理論(分離の6度)として知られているように、わずか6人は、それらを一緒に持って来ることができる6人の間で。ミルグラムの理論を繰り返し叶うが、多くの社会科学者があると、それらに強い関心となっているが、30年後に、それはあまりにも厳格な証拠、ばかり伝説の仮説ではありませんでした。
彼はHDUでN個体の調査を開始しましたので、レレこの理論は、非常に興味があります。彼は希望あなたは彼が「6次の隔たり」をテストするために助けを喜ば、それらの間の関係を満たしていることを確立しています。
このトピックでは、ファイルの末尾に対処するために、テストの複数のセットが含まれています。各試験のために、最初の行は二つの整数N、M(0 <N <含まれ 、100,0 <M <200) の代表的な(0〜N-1の番号を編成している)HDU番号に、それぞれ、及びそれらの間の関係。M個の行があり、その後、各行二つの整数A、B(0 <= A 、B <N) の数は、互いに知り合いHDU番号AおよびBに示されています。Mグループの関係に加えて、任意の他の二つの間に満たされていません。
出力
各試験のために、データは、そうでなければ、行の「分離の6度」理論出力「はい」に沿って出力「いいえ」である場合。
サンプル入力
8 7 0 1 1 2 2 3 3 4 4 5 5 6 6 7 8 8 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0
サンプル出力
はい
はい
件名の説明:
データによると、任意の2人が、その中で6人までのために分離するかどうか、わかりません決定します。
分析:
実際には、それは、パスが1である知っている唯一の2人の最短距離を依頼することです。無限の他のセットを知ってはいけません。
最短距離のいずれか2つのためのフロイドのアルゴリズム。そして、それを横断し、7つ以上があるかどうかを確認。より満足していません。
コード:
#include <iostreamの> する#include < 文字列・H> に#define分(x、y)はX <Y X:Y。 使用して 名前空間はstdを、 const int型 INF = 1000000 ; INTの RAL [ 106 ] [ 106 ]; int型のmain() { int型N、M。 一方、(scanf関数(" %D%D "、&N、&M)=!EOF) { ため(intは iは= 0、I <N; I ++ ) { ため(INT J = 0; J <nであり、j ++ ) { RAL [I] [J] =(I == J?0 :INF)。 } } のための(INT iは= 0 ; I <M I ++ ) { int型A、B。 scanf関数(" %D%D "、&、&B)。 もし(!= B) RAL [A] [B] = RAL [B] [A] = 1 。 } のための(int型 K = 0、K ++; K <N ) のための(INT I = 0; I <N; I ++ ) のための(INT J = 0 ; J <N; J ++ ) RAL [I] [J] =分(RAL [I]、[J]、RAL [I] [K] + RAL [K] [J])。 INTなし= 0 ; 用(INT iは= 0、I <N; I ++ ) のための(int型 J = 0 ; J <N J ++ ) { 場合(RAL [I] [J]> 7)なし= 1 。 } であれば(NO)COUT << " いいえ\ n " 。 そうしないと裁判所未満<< " はい\ n個" ; } 戻り 0 。 }