标签:
好吧先不吐槽这道题的题目是一部介绍facebook的电影……
为1
【题解】
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int MAXN=100+20,INF=20000001; 4 double a[MAXN][MAXN]; 5 double mapx[MAXN][MAXN],ans[MAXN]; 6 int n,m; 7 int main() { 8 scanf("%d%d",&n,&m); 9 for (int i=1;i<=n;++i) 10 for (int j=1;j<=n;++j) mapx[i][j]=mapx[j][i]=INF; 11 for (int i=1;i<=m;++i) { 12 int f,t; double w; 13 scanf("%d%d%lf",&f,&t,&w); 14 mapx[f][t]=mapx[t][f]=w; 15 a[f][t]=a[t][f]=1; 16 } 17 for (int k=1;k<=n;++k) 18 for (int i=1;i<=n;++i) 19 for (int j=1;j<=n;++j) { 20 if(mapx[i][k]+mapx[k][j]<mapx[i][j]) { 21 mapx[i][j]=mapx[i][k]+mapx[k][j]; 22 a[i][j]=a[i][k]*a[k][j]; 23 } 24 else if(mapx[i][k]+mapx[k][j]==mapx[i][j]) a[i][j]+=a[i][k]*a[k][j]; 25 } 26 27 for (int i=1;i<=n;++i) a[i][i]=0; 28 for (int k=1;k<=n;++k) 29 for (int i=1;i<=n;++i) 30 for (int j=1;j<=n;++j) 31 if(mapx[i][j]==mapx[i][k]+mapx[k][j] && a[i][j]>0) ans[k]+=a[i][k]*a[k][j]/a[i][j]; 32 for (int i=1;i<=n;++i) 33 printf("%.3lf\n",ans[i]); 34 return 0; 35 }
好了其实这题并不难,黄学长他们的题解看上去就比我先进多了
orzhzw,orzzld。
这是我在BZOJ AC的除A+B外的第一题,以此纪念。 2015/5/24
标签:
原文地址:http://www.cnblogs.com/TonyNeal/p/bzoj1491.html