C - 分離度6

C - 分離度6

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 
}
 

おすすめ

転載: www.cnblogs.com/studyshare777/p/12198679.html
おすすめ