【BZOJ 1491】 [NOI2007]社交网络
2016-02-20 07:31
435 查看
Description
Input
Output
输出文件包括n 行,每行一个实数,精确到小数点后3 位。第i 行的实数表 示结点i 在社交网络中的重要程度。Sample Input
4 41 2 1
2 3 1
3 4 1
4 1 1
Sample Output
1.0001.000
1.000
1.000
HINT
为1
看到数据范围,显然Floyd
map[i][j]表示i-->j的最短路,a[i][j]表示表示从i到j最短路的方案数,在改变最短路时该数组清零
#include<cstdio> #include<cstring> using namespace std; const int N=110,inf=1000000000; double a ; int n,m,u,v; double ans ,map ,w; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) map[i][j]=(inf+0.0); for(int i=1;i<=m;i++){ scanf("%d%d%lf",&u,&v,&w); map[u][v]=map[v][u]=(w+0.0); a[u][v]=a[v][u]=1; } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if (map[i][j]>map[i][k]+map[k][j])map[i][j]=map[i][k]+map[k][j],a[i][j]=0;; if (map[i][j]==(map[i][k]+map[k][j])) a[i][j]+=a[i][k]*a[k][j]; } for(int i=1;i<=n;i++)a[i][i]=0; for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if (map[i][j]==(map[i][k]+map[k][j])&&a[i][j]>0) ans[k]+=a[i][k]*a[k][j]/(a[i][j]+0.0); } for(int i=1;i<=n;i++) printf("%.3lf\n",ans[i]); }
相关文章推荐
- WinHTTP C/C++ API Reference
- [深入Python]sys.modules http://www.cnblogs.com/tuzkee/p/3540448.html
- java高性能 tcp协议代码示例(一)
- Java TCP 简单实例
- HttpServlet类详解
- IOS alamofire网络请求
- 深度学习系列(3)——使用神经网络去辨识手写数字
- 软考之路(1)——浅解网络基础知识
- Https(SSL/TLS)原理详解
- BZOJ_P1412 [ZJOI2009]狼和羊的故事(网络流+最大流最小割)
- Android开发学习之路--网络编程之初体验
- Android开发学习之路--网络编程之初体验
- 深入理解Linux网络技术内幕——中断与网络驱动程序
- 深度学习系列(2)——神经网络与深度学习
- 神经网络的学习 机器学习基础(4)
- 加载网络图片(若SDCard有,则本地加载)
- 网络流24题 飞行员配对方案问题
- Redhat 7.0使用CentOS 7 的Yum 网络源
- 神经网络的表达式 机器学习基础(3)
- BZOJ_P2324 [ZJOI2011]营救皮卡丘(网络流+最小费用最大流+Floyd)