1 条题解
-
0Guest MOD
-
1
#include <bits/stdc++.h> using namespace std; const int maxn=1e4+10; int d[101][101]; double sum[101][101]; int main(){ int n,m; cin>>n>>m; int a,b,c; memset(d,0x3f3f3f3f,sizeof(d)); for(int i=1;i<=m;i++){ cin>>a>>b>>c; d[a][b]=c; d[b][a]=c; sum[a][b]=1; sum[b][a]=1; } for(int k=1;k<=n;k++) for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++){ if(i!=k&&j!=k) if(d[i][k]+d[k][j]<d[i][j]){ d[i][j]=d[i][k]+d[k][j]; d[j][i]=d[i][j]; sum[i][j]=sum[i][k]*sum[k][j]; sum[j][i]=sum[i][j]; } else if(d[i][k]+d[k][j]==d[i][j]){ sum[i][j]+=sum[i][k]*sum[k][j]; sum[j][i]=sum[i][j]; } } for(int i=1;i<=n;i++){ double ans=0; for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ if(j!=i&&k!=i&&d[i][j]+d[i][k]==d[k][j]){ ans+=(sum[i][j]*sum[i][k])/sum[j][k]; } } } printf("%.3lf\n",ans); } return 0; }
- 1
信息
- ID
- 149
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者