BZOJ 1491 NOI2007 社交網路

2022-05-14 05:15:41 字數 838 閱讀 1892

輸出檔案包括n 行,每行乙個實數,精確到小數點後3 位。第i 行的實數表 示結點i 在社交網路中的重要程度。

4 41 2 1

2 3 1

3 4 1

4 1 1

1.000

1.000

1.000

1.000

為1看到資料範圍,顯然floyd

map[i][j]表示i-->j的最短路,a[i][j]表示表示從i到j最短路的方案數,在改變最短路時該陣列清零

1 #include2 #include3

using

namespace

std;

4const

int n=110,inf=1000000000;5

double

a[n][n];

6int

n,m,u,v;

7double

ans[n],map[n][n],w;

8int

main()

17for(int k=1;k<=n;k++)

18for(int i=1;i<=n;i++)

19for(int j=1;j<=n;j++)

23for(int i=1;i<=n;i++)a[i][i]=0;24

for(int k=1;k<=n;k++)

25for(int i=1;i<=n;i++)

26for(int j=1;j<=n;j++)

30for(int i=1;i<=n;i++) printf("

%.3lf\n

",ans[i]);

31 }

BZOJ 1491 NOI2007 社交網路

顯然這是一道要求多源最短路的題目,資料範圍很小,目測用弗洛伊德演算法。由題意,先求出各個點之間的最短路徑,同時利用乘法原理,計算出由 i 到 j 之間的最短路徑個數。如果又發現了一條最短路,由乘法原理計算增加的路徑個數再加上即可。我寫的 沒有去除自己到自己的路徑,因此需清空,但也可在 floyd 中...

BZOJ 1491 NOI2007 社交網路

傳送門 資料範圍很小,我們考慮floyd。要求的是路徑條數,所以我們在floyd的時候直接預處理出兩點之間的路徑條數。用num i j 表示,然後floyd的時候,如果dis i j include include include using namespace std const int maxn...

BZOJ 1491 NOI2007 社交網路

鏈結 我是鏈結,點我呀 題意 在這裡輸入題意 題解 floyd演算法 算出任意兩點之間的最短路,以及最短路的條數。然後三重迴圈列舉v,s,t就好 看看s到t的最短路徑不經過v 經過的話增加答案貢獻 o n 3 include include define ll long long using nam...