nは友人の誰かを探す:
小グループ(データのセット)について、B、友人、Xの親しみやすさであり、bはY、C、友人、親しみやすさがあり、そしてAとCがいない友達である、そしてcが言いました2度友人A、X + Yのフレンドリ度、BはXの、使い勝手の1度の友人であり、
今のデータを入力します。
1行目:例えば2以下のようなT、データのN個のセットの合計の代表;
第それぞれ第一のデータの様々なパラメータを入力します2行3
列2:M、I、N-;
。M = 10人のグループを表し、それぞれの人が〜0番号9;
I = 5の代表的なシーク。米国特許第5、ヒトバディ関係、
友人2 5号、無出力1の代わりにN-2 =要求、もし、降順使い勝手に応じて、利便同じであれば、人々の数の昇順に並べ;
ライン3:K = 13最初の数は、13友人関係、友好度の合計の最初のグループを表す0 3 5 0 3及び第5号など、
出力シーケンス中、nのi番目;友人のTが2に等しい場合、2人の関係が出力されるように
2 10 5 2 3 0 ... 13は、後に5省略されています
C ++コード:
書式#include <iostreamの> の#include <ベクトル> の#include < 文字列 > の#include <キュー> の#include <アルゴリズム> 使用して 名前空間はstdを、 BOOL CMP(ベクトル< 整数 > A、ベクトル< INT > B){ 戻り [ 1 ]> Bを[ 1 ]。 } int型のmain(){ int型のT。 CIN >> T; 用(int型 ID = 0、ID <T; ID ++ ){ int型のM、I、N。 CIN>> M >> I >> N。 int型のk; cinを >> K; // 朋友圈图初始化 ベクトル<ベクトル< 整数 >> G(M、ベクトル< INT >(M、0 )); 以下のために(INT X = 0 ; X <K; X ++ ){ int型、B、W。 CIN >> A >> B >> ワット。 G [A] [B] = G [B] [A] = W。 } ベクトル < INT >訪問(M、0 ); キュー < 整数 > Q; //友人の初期化 のために(INT X = 0 ; X <M; X ++ ){ IF(G [I] [X] =!0 {) q.push(X); 訪問[X] = G [I] [X ]; } } // BFS // 第一層は、n型度は、友人を見つける ために(INT X = 1 ; X <N X ++ ){ int型 LEN = q.size(); // 第二層、電流友人の端部は、Yの友人を見つけるために、 のために(int型、Y = 0 ; Y <LEN; Y ++ ){ int型、A =q.front(); q.pop(); // 現在のx-探し次度の第三層すべての友人 のための(INT Z = 0 ; Z <M; Z ++ ){ IF(Z = I! G && [A] [Z] =!0 &&訪問[Z] == 0 ){ q.push(Z); 訪問[Z] =ログイン[A] + G [A] [Z]; } IF(訪問![Z] = 0 &&訪問[Z] <ログイン[A] + G [A] [Z])ログイン[Z] =ログイン[A] + G [A] [Z]; } } } ベクトル < 整数 > NDF; もし(q.size()== 0 ){ COUT << - 1 << ENDL。続け; } 他{ ながら(!q.empty()){ ndf.push_back(q.front())。 q.pop(); } } int型 max_x = ndf.size()。 ベクトル <ベクトル< int型 >> 解像度。 ソート(ndf.begin()、ndf.end()); 用(INT X = 0 ; X <max_xあり; x ++ ){ ベクトル < 整数 >細胞; cell.push_back(NDF [X])。 cell.push_backは([NDF [X]]をご覧ください)。 res.push_back(セル) } ソート(res.begin()、res.end()、CMP)。 用(INT X = 0 ; X <max_xあり; x ++ ){ COUT << RES [X] [ 0 ] << " " 。 } COUT << ENDL。 } 戻り 0 。 } / * 2 10 5 2 13 0 3 5 0 4 9 0 6 8 0 7 5 1 2 6 1〜6 3 2 9 7 3 4 3 3 5 3 3 3 8 3 9 3 5 7 9 7 8 9 10 0 2 13 0 3 5 0 4 9 0 6 8 0 7 5 1 2 6 1〜6 3 2 9 7 3 4 3 3 5 3 3 3 8 3 9 3 5 7 9 7 8 9 * /