图论
_whaleshark0622_
ACM选手,邮箱whalesong0622@163.com,QQ联系方式847978232,加我好友备注一下学校和姓名就好啦~
展开
-
可达性统计 拓扑排序
因为一个点能到达的点等于他后续的点能到达的点集的并集,因此需要先算完后续的点才能算该点。如何先算后续的点呢?先找到已经算完的点,当一个点的入度等于0的时候,它的值就不会再有变化了,这启发我们用拓扑排序。反向建边,这样子每次找到一个入度为0的点,就可以找到他的前驱节点,并将自身的点集并到前驱结点上。由于一个点可能被多个点到达,这样子不能简单的统计到达的点的数量,这里用的是bitset来进行合并。#include <bits/stdc++.h>using namespace std;#d原创 2021-04-06 19:28:16 · 109 阅读 · 0 评论 -
Codeforces Round #709 useful edge 枚举,最短路
题目大意:一个无向有全图中,给出q个u,v点以及权值l,定义一条路径上以u和v分别为起点和终点的路径,且这条路径的边权和不超过l,那么这条路径上的所有边都是有用的边。求有用的边的个数思路:枚举所有边,看他是否能成为有用边。具体做法:枚举边的端点i,j,先找到i到q个目标点u的最大剩余值max{l-dis[i][u]},那么只要边的另一个端点j离目标点的距离小于max{l-dis[i][u]}即可。由于数据范围n小于600且时间范围5s,因此最短距离dis可以用floyd。#include <bit原创 2021-03-27 17:23:14 · 81 阅读 · 0 评论