【题目链接】

点击打开链接

【算法】

首先,跑floyd,计算最短路和最短路径数

然后,计算答案,枚举k,s,t,若dist[s][k] + dist[k][t] = dist[s][t],

那么,点对(s,t)对答案k的”贡献“就是c[s][k]*c[k][t]/c[s][t]

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN 110
const int INF = 1e9; int i,j,n,m,u,v,w;
double ans[MAXN];
long long g[MAXN][MAXN],c[MAXN][MAXN]; inline void floyd()
{
int i,j,k;
for (k = ; k <= n; k++)
{
for (i = ; i <= n; i++)
{
if (i == k) continue;
for (j = ; j <= n; j++)
{
if (i == j || k == j) continue;
if (g[i][k] + g[k][j] < g[i][j])
{
g[i][j] = g[i][k] + g[k][j];
c[i][j] = c[i][k] * c[k][j];
}
else if (g[i][k] + g[k][j] == g[i][j]) c[i][j] += c[i][k] * c[k][j];
}
}
}
}
inline void calc()
{
int k,s,t;
for (k = ; k <= n; k++)
{
for (s = ; s <= n; s++)
{
for (t = ; t <= n; t++)
{
if (s == t) continue;
if (g[s][k] + g[k][t] == g[s][t])
{
if (c[s][t])
ans[k] += 1.0 * c[s][k] * c[k][t] / c[s][t];
}
}
}
}
} int main() { scanf("%d%d",&n,&m);
for (i = ; i <= n; i++)
{
for (j = ; j <= n; j++)
{
g[i][j] = INF;
}
}
while (m--)
{
scanf("%d%d%d",&u,&v,&w);
g[u][v] = g[v][u] = w;
c[u][v] = c[v][u] = ;
} floyd();
calc(); for (i = ; i <= n; i++) printf("%.3lf\n",ans[i]); return ; }

【NOI 2007】 社交网络的更多相关文章

  1. [NOI 2007]社交网络

    Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系.我们将这个 ...

  2. 解题:NOI 2007 社交网络

    题面 先跑一边Floyd乘法原理统计任意两点间最短路数目,然后再枚举一次按照题意即可求出答案,会写那道JSOI2007就会这个 #include<cstdio> #include<c ...

  3. 【BZOJ 1494】【NOI 2007】生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1494 这道题..因为k很小,而且我们只关心连续的k个节点的连通性,所以把连续的k个点轮廓线上的连通性 ...

  4. 【BZOJ 1492】【NOI 2007】货币兑换Cash

    这是道CDQ分治的例题: $O(n^2)$的DP: f [1]←S* Rate[1] / (A[1] * Rate[1] + B[1]) Ans←SFor i ← 2 to n For j ←1 to ...

  5. 线性代数(矩阵乘法):NOI 2007 生成树计数

    这道题就是深搜矩阵,再快速幂. #include <iostream> #include <cstring> #include <cstdio> #include ...

  6. [NOI 2007]货币兑换Cash

    Description 题库链接 (按我的语文水平完全无 fa♂ 概括题意,找了 hahalidaxin 的题意简述... 有 \(AB\) 两种货币,每天可以可以付 \(IP_i\) 元,买到 \( ...

  7. NOI 2007 货币兑换Cash (bzoj 1492) - 斜率优化 - 动态规划 - CDQ分治

    Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券(以下 简称B券).每个持有金券的顾客都有一个自己的帐户.金券的数目可以是一个 ...

  8. dp式子100个……

    1.        资源问题1-----机器分配问题F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2------01背包问题F[I,j]:=max(f[i- ...

  9. dp方程

    1.        资源问题1 -----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2 ------01背包问题   F[I,j]:=ma ...

随机推荐

  1. 零基础入门学习Python(28)--文件

    知识点 Python中使用open(...)这个内置函数来打开文件,并返回文件对象 open()函数参数说明: open(file, mode='r', buffering=-1, encoding= ...

  2. ubuntu 安装 navicat

    下载navicat解压到opt目录 创建桌面快捷方式sudo vim /usr/share/applications/navicat.desktop [Desktop Entry] Encoding= ...

  3. MFC对话框使用CPrintDialog实现打印,指定打印机、后台打印

    推荐下 不错. 对话框打印,网上一搜一大堆,基本分2类: A类: CPrintDialog.DoModal,然后在模态对话框里选打印机.打印配置: B类:GetPrinterDeviceDefault ...

  4. java手工从键盘输入数字存放到数组并将其输出

    package suanfafenxi; import java.util.Scanner; public class shiyan { static int number=10; static in ...

  5. HDU 5492 Find a path

    Find a path Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID ...

  6. [K/3Cloud] 理解BOS关于Enabled属性的表决器原理

    通常的编程中,我们习惯: btnOK.Enabled = true; 这个样子就会将按钮变成有效,反之亦然.但在ERP的表单中,其某个按钮或字段其有效性及其复杂,例如一个表格中某个数量单元格其有效性是 ...

  7. msp430入门学习13

    msp430的定时器--Timer_B(定时器B)

  8. Thinkphp5.0 的使用模型Model删除数据

    Thinkphp5.0 的使用模型Model删除数据 一.使用destory()删除数据 //删除id为3的记录 $res = User::destroy(3); //返回影响的行数 dump($re ...

  9. zoj3988 Prime Set

    思路不难想到二分图求个最大匹配P,若P>=K,则2*K即可,否则应为P*2+min(K-P,未匹配且有度数不为0的顶点个数s).但坑点在于有1的情况,所以如果直接建二分图去跑最大匹配会因为1的影 ...

  10. 七牛云上传图片到cdn,cdn返回的是一个只有图片的url

    如: