輸出檔案包括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 #include3using
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...