【Floyd】BZOJ1491: [NOI2007]社交网络
Description

Solution
n<=100自然联想Floyd
设两个数组d[n][n]存最短距离,t[n][n]存最短路径条数
更新d的时候顺便更新t,乘法原理
if(d[i][j]>d[i][k]+d[k][j]){
d[i][j]=d[i][k]+d[k][j];
t[i][j]=t[i][k]*t[k][j];
}
else if(d[i][j]==d[i][k]+d[k][j])
t[i][j]+=t[i][k]*t[k][j];
再统计答案
if(d[i][j]==d[i][k]+d[k][j])
c[k]+=(double)(t[i][k]*t[k][j])/t[i][j];
感觉Floyd也就能做这些事。。
Code
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
const int maxn=; ll d[maxn][maxn],t[maxn][maxn];
int n,m;
double c[maxn]; int main(){
scanf("%d%d",&n,&m);
int u,v,w;
memset(d,/,sizeof(d));
for(int i=;i<=n;i++)
d[i][i]=,t[i][i]=; for(int i=;i<=m;i++){
scanf("%d%d%d",&u,&v,&w);
if(w<d[u][v]){
d[u][v]=d[v][u]=w;
t[u][v]=t[v][u]=;
}
else if(w==d[u][v]){
t[u][v]++;
t[v][u]++;
}
} for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)if(i!=j&&i!=k&&j!=k){
if(d[i][j]>d[i][k]+d[k][j]){
d[i][j]=d[i][k]+d[k][j];
t[i][j]=t[i][k]*t[k][j];
}
else if(d[i][j]==d[i][k]+d[k][j])
t[i][j]+=t[i][k]*t[k][j];
} memset(c,,sizeof(c));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int k=;k<=n;k++)if(i!=j&&i!=k&&j!=k){
if(d[i][j]!=d[i][k]+d[k][j]) continue;
c[k]+=(double)t[i][k]*t[k][j]/t[i][j];
} for(int i=;i<=n;i++)
printf("%.3lf\n",c[i]);
return ;
}
【Floyd】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个人,人与人之间有不同程度的关系.我们将这个关系网络对应到一 ...
- BZOJ1491: [NOI2007]社交网络
传送门 最短路计数问题.因为数据量非常小($N \leq 100$),所以Floyd随便搞搞就行了. $f[i][j]$表示路径长度,$g[i][j]$表示最短路方案数. 先跑一遍裸的Floyd,然后 ...
- BZOJ1491 [NOI2007]社交网络[最短路计数]
$n$非常的小,结合题目计算式可以想到$O(n^3)$暴枚$s,t,v$,看$v$在不在$s\to t$最短路上($dis_{s,v}+dis_{v,t}=dis_{s,v}$是$v$在两点最短路上的 ...
- 洛谷P2047||bzoj1491 [NOI2007]社交网络
https://www.luogu.org/problemnew/show/P2047 https://www.lydsy.com/JudgeOnline/problem.php?id=1491 也可 ...
- 【BZOJ1491】[NOI2007]社交网络 Floyd
[BZOJ1491][NOI2007]社交网络 Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题. 在一个社交圈子 ...
- 图论(floyd算法):NOI2007 社交网络
[NOI2007] 社交网络 ★★ 输入文件:network1.in 输出文件:network1.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 在社交网络( ...
- BZOJ 1491: [NOI2007]社交网络( floyd )
floyd...求最短路时顺便求出路径数. 时间复杂度O(N^3) ------------------------------------------------------------------ ...
随机推荐
- miniUI Grid添加汇总行,Grid绑定数据,IDEA免编译设置
坑1: 2017-6-5周二,上午解决了昨天摸索一下午的问题,使用miniui显示汇总行数据,要点有这么几个 在创建Grid div的时候一定要加上以下两个属性: //显示汇总行开关 showSumm ...
- merge intervals(合并间隔)
Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...
- 【转载】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
实例:1,http://localhost/aaa/ (打开aaa中的index.php)结果:$_SERVER['QUERY_STRING'] = "";$_SERVER['RE ...
- orderBy新写法
通常,我们处理排序规则的处理方法是在sql 语句中order by create_time desc, 但是这时我们需要从控制器中一步步找到该方法,操作多. 我们试着将业务逻辑拆分到控制器 中, 把排 ...
- IEEE发布2017年编程语言排行榜:Python高居首位
https://news.cnblogs.com/n/574248 编者按:本文由微信公众号“机器之心”(ID:almosthuman2014)编译,机器之心专注生产 AI 领域专业性内容.本文作者: ...
- Spring Security简明实践及相关国际化处理
别人的都是最佳实践,因为我目前的设置没有按照参考文档推荐,还是采用DelegatingFilterProxy,所以我只能说简明实践.先贴我的applicationContext-security.xm ...
- Socket.io文字直播聊天室的简单代码
直接上代码吧,被注释掉的主要是调试代码,和技术选型的测试代码 var app = require('express')(); var server = require('http').Server(a ...
- Linux的动态库与静态库
1.动态库与静态库简介 在实际的软件开发中,为了方便使用一些被重复调用的公共代码,我们经常将这些公共的函数编译成动态库或静态库.我们知道程序一般要经过预处理.编译.汇编和链接这几个步骤才能变成可执行的 ...
- java之jsp内置对象
1.out对象 <% out.println("金鳞岂是池中物,<br>"); out.println("一遇风云变化龙.<br>" ...
- 你需要知道的Android拍照适配方案
拍照功能实现 Android 程序上实现拍照功能的方式分为两种:第一种是利用相机的 API 来自定义相机,第二种是利用 Intent 调用系统指定的相机拍照.下面讲的内容都是针对第二种实现方式的适配. ...