Cowvinベーコンの6度
説明
Mathクラス、WNJXYKは突然、我々は計算を定量化するために他の皆に平均距離に人を使用し、また人気が定量化することができました。
ここで定義された人々の間の距離:
1.自分自身の距離0と
2. AとBは同じ小さなグループに属している場合は、それらの間の距離が1で
AとBは、小グループ、Bにある場合は3 Cは小グループに属し、AおよびCは、異なるグループに属する小、距離AおよびCは2である(B介して接点C、C二人)
4など
クラスは、N個の個々の(2 <= N <= 300)、M(1 <= M <= 10000)の合計の小グループとの関係を有しています。さて、あなたはクラスに小さなグループを与えるすべての情報は、他の人の平均距離に、あなたのクラスの人気最高の人に尋ねます。(あなたは出力に100回の平均距離が必要)
入力
入力2つの証明書N、Mの最初の行
各行の先頭に次の行のM + 1は、次の整数Kは、小グループの学生の数を表し、Kは小さなグループサイズを提示整数を表します。
出力
出力ライン:100 *最小の平均距離(floatとdoubleの計算プログラムを使用していない、和を宣告することができます)
サンプル入力
4 2
3 1 2 3
2 3 4
サンプル出力
100
トピックリンク
https://vjudge.net/problem/POJ-2139
最短経路問題は、人毎に2人の間の距離を計算し、隣接する点群1との間の距離、及びその後フロイドのアルゴリズムはできる限り
フロイドのアルゴリズムは、詳細な https://www.cnblogs.com/sky-stars/p/11204139.html
ACコード
#include <iostreamの> する#include <cstdioを> する#include <fstreamの> する#include <アルゴリズム> の#include <cmath> の#include <両端キュー> の#include <ベクトル> の#include <キュー> の#include < ストリング > 1つ の#include <CStringの> の#include <地図> の#include <スタック> の#include < 設定 > の#include <sstream提供> の#define IOS ios_base :: sync_with_stdio(0)。CIN。 LL長い長 の#define 0x3f3f3f3f INF の#define MEM(X、Y)のmemset(X、Y、はsizeof(X)) の#define MAXN 300 + 5 の#define P対<整数、整数> 使用して 名前空間STDを、 INTのN、M、X。 INT D [MAXN] [MAXN]。 無効)(INITを { // 初始化iは、j個の的を距离到为无穷大 ため(int型 i = 1 ; iがn = <I ++ ) のための(INT J = 1 ; J <= nであり、j ++ ) { 場合(I == J)// 自己 D [i]は[J] = D [j]は[I] = 0; 他の D [i]は[J] = D [j]と[I] = INF。 } } int型のmain() { CIN >> N >> M。 その中に(); // 初始化 一方(M-- ) { CIN >> X。 INT [MAXN] B。// 暂时存一下人 のために(int型 i = 0 ; I <X、iは++ ) CIN >> のb [i]は、 以下のために(int型私は= 0 ;私は、x < 1を、私は++)//。各2の1の距離 のために(INT J =私は+ 1、J <X; J ++ ) D [B [I] [B [J] = D [B [J] [B [I] = 1 ; } // 最短経路を見つけるためのフロイドのアルゴリズム のための(int型 = K 1、K <= N; K ++ ) のための(INT I = 1 ; I <= N; I ++ ) のための(INT J = 1。 ; J <= N- ; J ++ ) D [I] [J] =分(D [I]、[J]、D [I] [K] + D [K] [J]); int型 ANS = INF; のための(INTI = 1 ; I <= N。私は++)// 枚举每个人 { int型の合計= 0 ; 用(INT J = 1 ; J <= N; J ++ ) 合計 + = D [i]は[J]。 ANS =分(ANS、100 *の和/(N- 1 ))。 } COUT << ANS << ENDL。 リターン 0 ; }