bzoj1491: [NOI2007]社交网络 FLOYD
来源:互联网 发布:审计软件缺点 编辑:程序博客网 时间:2024/06/05 09:35
经典的floyd ,w[I][J]表示从i到j有几条路,这里为了方便答案计算就设为double了。
floyd的时候进行判断,如果有更新的话w[i][j]=w[i][k]*w[k][j];如果是另一条最短路的话w[i][j]+=w[i][k]*w[k][j]。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define maxn 110#define maxm 10010using namespace std;int n,m;int dis[maxn][maxn];double w[maxn][maxn],ans[maxn];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { dis[i][j]=1000000; } } int x,y,z; for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z); dis[x][y]=dis[y][x]=z; w[x][y]=w[y][x]=1; } for(int k=1;k<=n;k++) { for(int i=1;i<=n;i++) { if(k==i) continue; for(int j=1;j<=n;j++) { if(k==j||i==j) continue; if(dis[i][k]+dis[k][j]<dis[i][j]) { dis[i][j]=dis[i][k]+dis[k][j]; w[i][j]=w[i][k]*w[k][j]; } else if(dis[i][k]+dis[k][j]==dis[i][j]) { w[i][j]+=w[i][k]*w[k][j]; } } } } for (int k=1;k<=n;k++) { for (int i=1;i<=n;i++) if (i!=k) for (int j=1;j<=n;j++) if (j!=i&&j!=k) if (dis[i][k]+dis[k][j]==dis[i][j]) ans[k]+=(w[i][k]*w[k][j])/w[i][j]; printf("%.3f\n",ans[k]); } return 0;}
0 0
- bzoj1491: [NOI2007]社交网络 FLOYD
- bzoj1491 [NOI2007]社交网络(Floyd+组合数学)
- [BZOJ1491][NOI2007]社交网络
- bzoj1491【NOI2007】社交网络
- BZOJ1491: [NOI2007]社交网络
- bzoj1491 [NOI2007]社交网络
- bzoj1491: [NOI2007]社交网络
- [bzoj1491] [NOI2007]社交网络
- bzoj1491: [NOI2007]社交网络
- bzoj1491 NOI2007 社交网络[floyed]
- bzoj1491 社交网络 floyd
- 1491: [NOI2007]社交网络 (FLOYD)
- 1491: [NOI2007]社交网络 floyd
- BZOJ 1491: [NOI2007]社交网络 Floyd
- BZOJ 1491 [NOI2007]社交网络(floyd)
- 【NOI2007】社交网络
- [NOI2007]社交网络
- 1491: [NOI2007]社交网络
- iPhone摄像头设备获取(分离简化版)
- MongoDB 里面日期查询的问题
- 色彩力量!21款你应该知道的优秀品牌设计
- 第六十三题(在字符串中删除特定的字符)
- wikioi过河卒
- bzoj1491: [NOI2007]社交网络 FLOYD
- Android 左右滑屏 方向判断 ViewPager
- c3p0的常用配置方式
- wikioi数的计算c++
- 号码归属地查询
- ViewPager onPageChangeListener总结
- wikioi最大公约数和最小公倍数c
- SQL主键外键!!!
- 是否静音