BZOJ1491: [NOI2007]社交网络
最短路计数问题。因为数据量非常小($N \leq 100$),所以Floyd随便搞搞就行了。
$f[i][j]$表示路径长度,$g[i][j]$表示最短路方案数。
先跑一遍裸的Floyd,然后利用乘法原理统计$g[i][j]$即可。
$g[i][j]=\sum g[i][k] \times g[k][j]$
//BZOJ 1491
//by Cydiater
//2016.10.27
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <bitset>
#include <iomanip>
using namespace std;
#define ll long long
#define up(i,j,n) for(int i=j;i<=n;i++)
#define down(i,j,n) for(int i=j;i>=n;i--)
#define cmax(a,b) a=max(a,b)
#define cmin(a,b) a=min(a,b)
#define db double
const ll MAXN=105;
const ll oo=1LL<<60;
inline ll read(){
char ch=getchar();ll x=0,f=1;
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
ll N,M,f[MAXN][MAXN],g[MAXN][MAXN],len=0;
db ans[MAXN];
struct edge{
ll x,y,v;
}e[MAXN*MAXN];
namespace solution{
void init(){
N=read();M=read();
up(i,1,N)up(j,1,N)f[i][j]=oo;
up(i,1,N)f[i][i]=0;
memset(g,0,sizeof(g));
up(i,1,M){
ll x=read(),y=read(),v=read();
f[x][y]=f[y][x]=v;
e[++len]=(edge){x,y,v};
}
}
void slove(){
up(k,1,N)up(i,1,N)up(j,1,N)cmin(f[i][j],f[i][k]+f[k][j]);
up(i,1,len){
ll x=e[i].x,y=e[i].y,v=e[i].v;
if(f[x][y]==v)g[x][y]=g[y][x]=1;
}
up(k,1,N)up(i,1,N)up(j,1,N)if(f[i][j]==f[i][k]+f[k][j]&&i!=k&&j!=k){
g[i][j]+=g[i][k]*g[k][j];
//cout<<i<<' '<<k<<' '<<j<<' '<<g[i][k]<<' '<<g[k][j]<<' '<<g[i][j]<<endl;
}
up(k,1,N)up(i,1,N)up(j,1,N)if(f[i][j]==f[i][k]+f[k][j]&&i!=k&&k!=j&&i!=j)
ans[k]+=(db)(g[i][k]*g[k][j])/(db)(g[i][j]);
}
void output(){
up(i,1,N)printf("%.3lf\n",ans[i]);
}
}
int main(){
//freopen("input.in","r",stdin);
using namespace solution;
init();
slove();
output();
return 0;
}
BZOJ1491: [NOI2007]社交网络的更多相关文章
- [BZOJ1491][NOI2007]社交网络 floyd
1491: [NOI2007]社交网络 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2196 Solved: 1170[Submit][Status ...
- BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2343 Solved: 1266[Submit][Status][Discuss] Descripti ...
- BZOJ1491 [NOI2007]社交网络 【floyd】
题目 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题. 在一个社交圈子里有n个人,人与人之间有不同程度的关系.我们将这个关系网络对应到一 ...
- 【Floyd】BZOJ1491: [NOI2007]社交网络
Description Solution n<=100自然联想Floyd 设两个数组d[n][n]存最短距离,t[n][n]存最短路径条数 更新d的时候顺便更新t,乘法原理 if(d[i][ ...
- 洛谷P2047||bzoj1491 [NOI2007]社交网络
https://www.luogu.org/problemnew/show/P2047 https://www.lydsy.com/JudgeOnline/problem.php?id=1491 也可 ...
- BZOJ1491 [NOI2007]社交网络[最短路计数]
$n$非常的小,结合题目计算式可以想到$O(n^3)$暴枚$s,t,v$,看$v$在不在$s\to t$最短路上($dis_{s,v}+dis_{v,t}=dis_{s,v}$是$v$在两点最短路上的 ...
- 【BZOJ1491】[NOI2007]社交网络 Floyd
[BZOJ1491][NOI2007]社交网络 Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题. 在一个社交圈子 ...
- BZOJ1491:1491: [NOI2007]社交网络
1491: [NOI2007]社交网络 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2204 Solved: 1175[Submit][Status ...
- BZOJ 1491 [NOI2007]社交网络
1491: [NOI2007]社交网络 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1159 Solved: 660[Submit][Status] ...
随机推荐
- Symantec Backup Exec 2012 Agent For Linux安装
Backup Exec 2012 介绍 Backup Exec 2012 是一种为虚拟和物理环境提供保护的集成产品,能够简化备份和灾难恢复,并提供了无可匹敌的恢复功能.借助于强大的 Symantec ...
- SQL Server中的“最大并行度”的配置建议
SQL Server中的最大并行度(max degree of parallelism)如何设置呢? 设置max degree of parallelism有什么好的建议和指导方针呢?在微软官方文档R ...
- Linux命令学习总结:dos2unix - unix2dos
命令简介: dos2unix是将Windows格式文件转换为Unix.Linux格式的实用命令.Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2 ...
- 为什么基于TCP UDP服务的一些简单服务端口号都是奇数
TCP是有NCP(网络控制协议)派生出来的,NCP是单工的,通信需要两个链接,所以会预留奇偶端口号.当TCP/UDP成为传输层协议,每个程序只是用一个端口号,且使用奇端口号.
- linux shell 读取for循环中出现难处理的数据之单引号错误实例
原语句: #!/bin/bash for test in I don't know if this'll work do echo "work:$test" done 结果: wo ...
- CentOS 7 无法使用中文输入法
已经在安装CentOS时设置了中文输入法,在"设置"-"区域与语言"选项里也可以看到如下图所示的界面,但在文档中切换后无法使用的问题:
- Android 中shape的使用(圆角矩形)
一.在res/drawable文件夹下创建一个名为gradient_box的xml文件: <?xml version="1.0" encoding="utf-8&q ...
- ubuntu下新建用户
ubuntu下新建用户和RedHat系列的linux有点不一样 新建用户的命令是useradd,修改密码是passwd,如下: sudo useradd zhuhui sudo passwd 1234 ...
- frakti && RunPodSandbox 源码分析
listen = flag.String("listen", "/var/run/frakti.sock", "...") hyperEnd ...
- 配置jpa
persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence ver ...