题意:对于所有的 \((u,v)\),询问有多少条边在这两个点的最短路边集之并内。

考虑对于每一个 \(u\) 建立最短路 DAG 图,问题变成询问唯一的度数为 \(0\) 的节点到所有节点路径的并集有多少条边。

倒是很容易想到用 bitset 去做,不过复杂度是 \(O(\frac {n^4} {\omega})\),应该跑不过去。我们注意到这题 \(O(n^3)\) 可过,所以考虑有没有 \(O(n^2)\) 的暴力。

由于枚举点对是 \(O(n^2)\) 的,考虑把边的计数转化到点上。

令 \(sum[u]\) 表示 \(u\) 的入度,那么 \((u,v)\) 的路径上有多少条边就转化成了路径并集的权值和,此时就可以使用枚举点对做掉了。

题外话:能不能有更快的做法?

我们发现对于 \(u\) 需要枚举的点一定在其的“子树”之内,所以考虑维护一下子树集合。

然后我们发现 bitset 可以胜任这份工作,不过复杂度是 \(O(\frac {n^3} {\omega}+n^3)\)

笔者只想快点儿做掉这道题,而且建图的话代码太长了,所以只写了 Floyd 的暴力。

#include<cstdio>
typedef unsigned uint;
const uint M=505;
uint n,m,sum[M],a[M][M],d[M][M],ans[M];
inline uint min(const uint&a,const uint&b){
return a>b?b:a;
}
signed main(){
register uint i,j,u,v,val;
scanf("%u%u",&n,&m);
for(i=1;i<=n;++i){
for(j=1;j<=n;++j)a[i][j]=a[j][i]=d[i][j]=d[j][i]=0x7fffffff;
d[i][i]=0;
}
for(i=1;i<=m;++i)scanf("%u%u%u",&u,&v,&val),a[u][v]=a[v][u]=d[u][v]=d[v][u]=min(a[u][v],val);
for(i=1;i<=n;++i){
for(u=1;u<=n;++u){
for(v=1;v<=n;++v){
d[u][v]=min(d[u][v],d[u][i]+d[i][v]);
}
}
}
for(i=1;i<=n;++i){
for(u=1;u<=n;++u)sum[u]=ans[u]=0;
for(u=1;u<=n;++u){
for(v=1;v<=n;++v){
if(d[i][u]+a[u][v]==d[i][v])++sum[v];
}
}
for(u=1;u<=n;++u){
for(v=1;v<=n;++v){
if(d[i][u]+d[u][v]==d[i][v])ans[v]+=sum[u];
}
}
for(u=i+1;u<=n;++u)printf("%u ",d[i][u]==0x7fffffff?0:ans[u]);
}
}

CF416E题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 关于viewControllers之间的传值方式

    AViewController----Push----BViewController 1.属性 AViewController---pop----BViewController 1.代理  2.通知  ...

  2. 何为VRRP

    VRRP 1.VRRP概述 2.VRRP结构 3.VRRP双主双备 前言:如何让多个网关能协同工作但又不会互相冲突?这时VRRP就应运而生,它可以实现网关的备份,又能解决多个网关之间互相冲突的问题. ...

  3. 大前端工程化之写一个简单的webpack插件

    今天写一个简单的webpack插件,来学习一下webpack插件 webpack插件机制可以使开发者在webpack构建过程中加入自己的行为,来针对自己项目中的一些需求做一些定制化 首先我们得知道一个 ...

  4. 014 Linux 线上高频使用以及面试高频问题——如何查找大文件并安全的清除?

    目录 1 案例描述? 2 命令一(目录统计排序最佳命令) 3 命令二(最实用,目录和文件一起统计排序) (1)命令详情和说明 (2)du.head.sort.awk 详细说明参考已有文章附录 (3)L ...

  5. 震惊!!!!!!!靠sort水过二叉堆的天秀操作

  6. Solution -「CF 1023F」Mobile Phone Network

    \(\mathcal{Description}\)   Link.   有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...

  7. Solution -「洛谷 P5236」「模板」静态仙人掌

    \(\mathcal{Description}\)   Link.   给定一个 \(n\) 个点 \(m\) 条边的仙人掌,\(q\) 组询问两点最短路.   \(n,q\le10^4\),\(m\ ...

  8. Java ClassLoader 学习笔记

    参考 Java类加载器(ClassLoader)

  9. Linux提权之信息收集

    1.操作系统版本 2.目标操作系统什么内核?多少位系统? 3.环境变量历史记录是否有利用? 4.运行了哪些服务和进程 top命令 5.安装了什么程序? 6.是否可以查看到root用户运行的进程 7.查 ...

  10. SUSCTF2022 Misc-AUDIO&RA2

    前言:这次参加了susctf感受颇深,题目难度不是很大很大,但是很考验基础的技术熟练度,比如re这次就因为不会套脚本去解密,导致卡死在了第一道题,一道没做出来.所以只做了做misc和web. RA2 ...