CF416E题解
题意:对于所有的 \((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题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 关于viewControllers之间的传值方式
AViewController----Push----BViewController 1.属性 AViewController---pop----BViewController 1.代理 2.通知 ...
- 何为VRRP
VRRP 1.VRRP概述 2.VRRP结构 3.VRRP双主双备 前言:如何让多个网关能协同工作但又不会互相冲突?这时VRRP就应运而生,它可以实现网关的备份,又能解决多个网关之间互相冲突的问题. ...
- 大前端工程化之写一个简单的webpack插件
今天写一个简单的webpack插件,来学习一下webpack插件 webpack插件机制可以使开发者在webpack构建过程中加入自己的行为,来针对自己项目中的一些需求做一些定制化 首先我们得知道一个 ...
- 014 Linux 线上高频使用以及面试高频问题——如何查找大文件并安全的清除?
目录 1 案例描述? 2 命令一(目录统计排序最佳命令) 3 命令二(最实用,目录和文件一起统计排序) (1)命令详情和说明 (2)du.head.sort.awk 详细说明参考已有文章附录 (3)L ...
- 震惊!!!!!!!靠sort水过二叉堆的天秀操作
- Solution -「CF 1023F」Mobile Phone Network
\(\mathcal{Description}\) Link. 有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...
- Solution -「洛谷 P5236」「模板」静态仙人掌
\(\mathcal{Description}\) Link. 给定一个 \(n\) 个点 \(m\) 条边的仙人掌,\(q\) 组询问两点最短路. \(n,q\le10^4\),\(m\ ...
- Java ClassLoader 学习笔记
参考 Java类加载器(ClassLoader)
- Linux提权之信息收集
1.操作系统版本 2.目标操作系统什么内核?多少位系统? 3.环境变量历史记录是否有利用? 4.运行了哪些服务和进程 top命令 5.安装了什么程序? 6.是否可以查看到root用户运行的进程 7.查 ...
- SUSCTF2022 Misc-AUDIO&RA2
前言:这次参加了susctf感受颇深,题目难度不是很大很大,但是很考验基础的技术熟练度,比如re这次就因为不会套脚本去解密,导致卡死在了第一道题,一道没做出来.所以只做了做misc和web. RA2 ...