[BZOJ1491][NOI2007]社交网络
来源:互联网 发布:粉笔申论智能批改 知乎 编辑:程序博客网 时间:2024/05/22 11:54
原题地址
Floyd变种,用Floyd算法求最短路条数. 我用的居然是三维数组...
#include <cstdio>typedef long long ll;const ll N=101;const ll INF=1<<28;ll n,m;ll f[N][N][N],g[N][N][N];ll Min(ll x,ll y){ return x<y?x:y;}int main(){ scanf("%lld%lld",&n,&m); for(ll i=1;i<=n;i++){ for(ll j=1;j<=n;j++) f[i][j][0]=INF; } for(ll i=1;i<=m;i++){ ll u,v,c; scanf("%lld%lld%lld",&u,&v,&c); f[u][v][0]=f[v][u][0]=c; g[u][v][0]=g[v][u][0]=1; } for(ll k=1;k<=n;k++){ for(ll i=1;i<=n;i++){ for(ll j=1;j<=n;j++) if(i==j) f[i][j][k]=INF; else f[i][j][k]=Min(f[i][j][k-1],f[i][k][k-1]+f[k][j][k-1]); } } for(ll k=1;k<=n;k++){ for(ll i=1;i<=n;i++){ for(ll j=1;j<=n;j++){ if(i==j) continue; if(f[i][j][k-1]<f[i][k][k-1]+f[k][j][k-1]) g[i][j][k]=g[i][j][k-1]; else if(f[i][k][k-1]+f[k][j][k-1]<f[i][j][k-1]) g[i][j][k]=g[i][k][k-1]*g[k][j][k-1]; else g[i][j][k]=g[i][j][k-1]+g[i][k][k-1]*g[k][j][k-1]; } } } for(ll i=1;i<=n;i++){ double imp=0; for(ll s=1;s<=n;s++){ for(ll t=1;t<=n;t++) if(i!=s&&i!=t&&s!=t&&f[s][i][n]+f[i][t][n]==f[s][t][n]&&g[s][t][n]) imp+=(double)(g[s][i][n]*g[i][t][n])/g[s][t][n]; } printf("%.3lf\n",imp); } return 0; }
0 0
- [BZOJ1491][NOI2007]社交网络
- bzoj1491【NOI2007】社交网络
- BZOJ1491: [NOI2007]社交网络
- bzoj1491 [NOI2007]社交网络
- bzoj1491: [NOI2007]社交网络
- [bzoj1491] [NOI2007]社交网络
- bzoj1491: [NOI2007]社交网络
- bzoj1491: [NOI2007]社交网络 FLOYD
- bzoj1491 NOI2007 社交网络[floyed]
- bzoj1491 [NOI2007]社交网络(Floyd+组合数学)
- bzoj1491 社交网络 floyd
- 【NOI2007】社交网络
- [NOI2007]社交网络
- 1491: [NOI2007]社交网络
- [NOI2007] 社交网络
- 1491: [NOI2007]社交网络
- 1491: [NOI2007]社交网络 (FLOYD)
- bzoj 1491: [NOI2007]社交网络
- 面试时碰到的一道数据库题目
- Java中File类的相关用法
- mysql + SpringMVC + MyBatis中批量插入实例以及@Param注解的用法
- 数据采集系统开发流程-4
- c语言中函数的简单介绍
- [BZOJ1491][NOI2007]社交网络
- ecshop后台广告列表中增加图片查看功能
- OC001---OC概述
- NSNumber的使用
- ruby selenium Driver控件查找(Switch_to)
- Scorecard 评分卡模型
- Journal and work shop on Computer(good url)
- Python zip()函数的用法
- iOS开发--in house发布和安装(ipa重新签名)