博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1491 [NOI2007]社交网络
阅读量:4957 次
发布时间:2019-06-12

本文共 2003 字,大约阅读时间需要 6 分钟。

蒟蒻是此题第500个AC的233

 

毛线,一眼看上去很高端,还有个什么复杂的式子。。。

后来发现。。。是。。。Floyd水题

d[i][j]表示i、j之间的最短距离,cnt[i][j]表示i、j之间最短距离的条数

于是运用乘法原理更新cnt[i][j]即可

 

1 /************************************************************** 2     Problem: 1491 3     User: rausen 4     Language: C++ 5     Result: Accepted 6     Time:104 ms 7     Memory:936 kb 8 ****************************************************************/ 9  10 #include 
11 #include
12 13 using namespace std;14 typedef long long ll;15 typedef double lf;16 const int N = 105;17 18 int n, m;19 int d[N][N];20 ll cnt[N][N];21 lf ans;22 23 inline int read() {24 int x = 0, sgn = 1;25 char ch = getchar();26 while (ch < '0' || '9' < ch) {27 if (ch == '-') sgn = -1;28 ch = getchar();29 }30 while ('0' <= ch && ch <= '9') {31 x = x * 10 + ch - '0';32 ch = getchar();33 }34 return sgn * x;35 }36 37 int main() {38 int i, j, k, x, y, z;39 n = read(), m = read();40 memset(d, 127/3, sizeof(d));41 for (i = 1; i <= m; ++i) {42 x = read(), y = read(), z = read();43 d[x][y] = d[y][x] = z;44 cnt[x][y] = cnt[y][x] = 1;45 }46 for (k = 1; k <= n; ++k)47 for (i = 1; i <= n; ++i) if (i != k)48 for (j = 1; j <= n; ++j) if (j != i && j != k)49 if (d[i][j] > d[i][k] + d[k][j])50 d[i][j] = d[i][k] + d[k][j],51 cnt[i][j] = cnt[i][k] * cnt[k][j];52 else if (d[i][j] == d[i][k] + d[k][j])53 cnt[i][j] += cnt[i][k] * cnt[k][j];54 for (k = 1; k <= n; ++k) {55 ans = 0;56 for (i = 1; i <= n; ++i) if (i != k)57 for (j = 1; j <= n; ++j) if (j != i && j != k)58 if (d[i][j] == d[i][k] + d[k][j])59 ans += (lf) (cnt[i][k] * cnt[k][j]) /cnt[i][j];60 printf("%.3lf\n", ans);61 }62 return 0;63 }
View Code

 

转载于:https://www.cnblogs.com/rausen/p/4126479.html

你可能感兴趣的文章
64位UBUNTU下安装adobe reader后无法启动
查看>>
iTextSharp带中文转换出来的PDF文档显示乱码
查看>>
阶乘因式分解(一)
查看>>
qt学习记录-----3.信号与槽的问题
查看>>
『ORACLE』 内置约束(11g)
查看>>
Vue--学习过程中遇到的坑
查看>>
组件:slot插槽
查看>>
.net压缩图片质量(附demo)
查看>>
equals和==的区别
查看>>
Android6.0指纹识别开发
查看>>
java反射机制剖析(二)— Class Loader
查看>>
走进C++程序世界------异常处理
查看>>
通过用户模型,对数据库进行增删改查操作。
查看>>
去除数组中重复的元素
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1988 Cube Stacking
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
Android------三种监听OnTouchListener、OnLongClickListener同时实现即其中返回值true或者false的含义...
查看>>
MATLAB实现多元线性回归预测
查看>>