可达性统计(拓扑排序)

有向无环图可达性统计 拓扑排序 题意:给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 思路对于点x可达的所有点等于自己与自己相邻的点可达的点的并集,由于是又向无环图,我们可以用topSort来获得一个合理的先后顺序,然后从后往前统计节点能达到的点的数量。 topSort 的性质: 1.只能是又向无环图才能top排序。 2.任意边(x,y) 在拓扑序中 x 都出现在y之前。 所有我们通过top... 阅读详情

题目:可达性统计

题意:给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。
思路:建图之后采用拓扑排序,然后反向遍历,使用bitset去标记所有可以走的点
代码:

#include<iostream>
#include<bitset>
#include<queue>
#include<string.h>
using namespace std;
const int maxn = 30010;
int n, m;
int h[maxn], e[maxn], ne[maxn], id, degree[maxn], rk[maxn];

bitset<maxn>vis[maxn];
int cn = 0;
void add(int u, int v) //前向星建图
{
    e[id] = v;
    ne[id] = h[u];
    h[u] = id++;
}
void TopSort() //拓扑排序
{
    queue<int> q;
    for(int i = 1; i <= n; i++)
    {
        if(degree[i] == 0)q.push(i);
    }
    while(!q.empty())
    {
        int t = q.front();
        q.pop();
        rk[cn++] = t;//保存拓扑排序的结果
        for(int i = h[t]; ~i; i = ne[i])
        {
            int k = e[i];
            degree[k]--;
            if(degree[k] == 0)q.push(k);
        }
    }

}
int main()
{
    cin>>n>>m;
    int id = 0;
    memset(h, -1, sizeof(h));//初始化h
    for(int i = 1; i <= m; i++)
    {
        int u, v;
        cin>>u>>v;
        add(u, v);
        degree[v]++;
    }
    TopSort();
    for(int i = n-1; ~i; i --)
    {
        int j = rk[i];
        vis[j][j] = 1;
        for(int k = h[j]; ~k; k = ne[k])
            vis[j] |= vis[e[k]];
    }
    for(int i = 1; i <= n; i++)cout<<vis[i].count()<<endl;

    return 0;
}


LIO-SAM运行报错‘process has died’?别慌,一个命令搞定libmetis.so库路径问题 本文详细解析了LIO-SAM运行中常见的‘process has died’报错问题,特别是由libmetis.so库路径错误导致的节点崩溃。通过一个简单的命令移动库文件到正确位置,即可快速解决这一问题,同时提供了多种替代方案和预防措施,帮助开发者更好地理解Linux动态库加载机制和ROS环境管理。 阅读详情

相关推荐

PCIe链路训练Recovery状态机:从RcvrLock到链路稳定的关键路径

本文深入解析PCIe链路训练中的Recovery状态机,特别是RcvrLock状态的关键作用。从Block对齐、均衡预设值应用到状态转移条件,详细介绍了确保链路稳定的技术要点,并提供了高速率下的特殊处理方法和常见问题排查指南,帮助工程师解决PCIe链路不稳定问题。

weixin_28739079的博客 174

Acwing 164.可达性统计(Java)

题目描述: 给定一张N个点M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数N,M,接下来M行每行两个整数 x,y,表示从x到y的一条有向边。 输出格式 输出共N行,表示每个点能够到达的点的数量。 数据范围 1≤N,M≤30000 题目链接:可达性统计 思路:不能直接使用DFS,因为对于a->b, a->c, b->d, c->d的情况,使用DFS得到 a 可达的点有4个,b , d , c , d,...

Easenyang的博客 1448

XMind文件解析黑科技:用Python实现版本自适应读取(兼容2010-2024)

本文深入探讨了如何利用Python实现XMind文件的版本自适应解析,兼容从2010到2024年的各版本。通过分析XMind文件作为ZIP压缩包的本质,文章提供了智能探测文件内部结构(JSON或XML)并构建健壮读取逻辑的完整方案,有效解决了版本兼容性难题,并演示了将解析数据转换为PlantUML等下游应用的实战案例。

weixin_29041767的博客 682

AcWing 164. 可达性统计

一、内容 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。 输出格式 输出共N行,表示每个点能够到达的点的数量。 数据范围 1≤N,M≤30000 输入样例: 10 10 3 8 2 3 2 5 5 9 5 9 2 3 3 9 4 8 2 10 4 9 输出样例: 1 6 3 3 ...

Tizzi的博客 671

UltraScale+ FPGA中GTY收发器参考时钟的跨Bank共享机制解析

本文深入解析了UltraScale+ FPGA中GTY收发器参考时钟的跨Bank共享机制,详细介绍了时钟布线架构、SLR区域限制及Vivado工程配置要点。通过实际案例和优化建议,帮助工程师解决高速串行通信中的时钟共享问题,提升系统性能。

weixin_29280219的博客 630

ANSYS 2026 R1 Windows系统安装避坑指南:环境配置、模块部署与许可证实战

ANSYS作为主流CAE仿真平台,其安装部署已远超传统软件范畴,演变为涉及操作系统底层、GPU驱动兼容性、许可证微服务架构和统一缓存机制的系统工程。理解ANSYS安装原理,需从Windows 11 UEFI安全启动要求、DirectX 12 Ultimate图形栈依赖、gRPC架构的License Manager端口动态分配等核心机制切入;技术价值在于保障HFSS GPU加速、Fluent MPI并行稳定性及Workbench多模块协同可靠性;典型应用场景涵盖高校仿真实验室升级、工业设计院所平台重建及高性能

weixin_29251337的博客 1390

164. 可达性统计(拓扑排序,位运算,状压)

给定一张 N 个点 M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。

Landing_on_Mars的博客 558

025、Zephyr RTOS设备树覆盖与修改

本文分享了在Zephyr RTOS中使用设备树覆盖(overlay)的实战经验。作者通过一个工业数据采集项目中GPIO无法拉高的调试案例,揭示了设备树覆盖的"叠加"本质而非简单替换。文章详细介绍了覆盖文件的正确编写方式,包括节点引用、pinctrl配置等技巧,并总结了常见陷阱如状态设置不完整、别名冲突等问题。特别强调了条件覆盖的用法和调试方法,最后提出了覆盖文件管理的五项实用原则,强调设备树覆盖是硬件与软件之间的重要契约,需要谨慎对待。全文以实际项目为背景,提供了可操作性强的技术建议。

m0_50546716的博客 33

动态规划(2)——路径问题

重点。

weixin_74042627的博客 999

OpenClaw实现多agent协作研究

本文介绍了如何构建多agent协作系统,通过飞书机器人实现任务分配与执行。系统包含三个agent:research_leader(总调度)、research_content(内容生成)和research_review(内容审核)。详细说明了agent配置方法(包括创建命令、权限设置)、飞书channel绑定方式,以及通过共享目录和会话机制实现协作。最后展示了应用示例,用户只需向leader机器人下达任务,系统即可自动完成内容生成和审核的全流程。

hhue2007的专栏 615

SAP-ABAP:SAP数据库视图(Database View)详解-创建

数据库视图是SAP中实现多表关联查询的基础工具,适合简单的跨表查询和权限控制场景。但其功能有限,对于复杂逻辑或高性能需求,建议结合CDS视图或ABAP程序开发。通过合理设计,数据库视图可显著提升开发效率和系统可维护性。它存储在数据库中,但本身不存储数据,仅通过查询动态生成结果。是一种基于物理数据库表的虚拟表,通过关联多个表(使用。

baidu_35680696的博客 1369

BM67 不同路径的数目(一)

描述 一个机器人在m×n大小的地图的左上角(起点)。 机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。 可以有多少种不同的路径从起点走到终点? 备注:m和n小于等于100,并保证计算结果在int范围内 数据范围:0<n,m≤100,保证计算结果在32位整型范围内 要求:空间复杂度 O(nm),时间复杂度 O(nm) 进阶:空间复杂度 O(1),时间复杂度 O(min(n,m)) 示例1 输入:2,1 返回值:1 示例2 输入:2,2 返回值:2 代码 class Solution {

zhinen丶的博客 503

桌面运维工程师面试题详解(一)

桌面运维工程师面试题详解(一)

jks212454的博客 1422

拓扑排序一>可达性统计

本文主要介绍了拓扑排序,以及运用拓扑排序和bitset的结合实现可达性统计的计算~

2402_88147924的博客 559

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

拓扑排序: 可达性统计

我们要统计从当前点可以到达点的个数,即我们可以统计拓扑排序序列中在该点之前(包括该点)的点的数目。第一行两个整数 N,M,接下来 M 行每行两个整数 x,y,表示从 x 到 y 的一条有向边。给定一张 N 个点 M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。------ 将reach[u]的第u位设置为1,表示从u可以到达该点。采用二进制的set,bitset a(N)必须指定大小N。----- 利用位运算将点v计入点u的可达点中。输出共 N 行,表示每个点能够到达的点的数量。

scsdvsvf的博客 512

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

拓扑排序——AcWing 164. 可达性统计

拓扑排序(Topological Sort)是对有向无环图(Directed Acyclic Graph,简称DAG)的一种排序方式。在一个有向无环图中,拓扑排序的结果是一个线性的顶点序列,其中对于图中的每一条有向边 (u, v),顶点 u 在序列中都会出现在顶点 v 的前面。如果一个图有多个拓扑排序,那么它不是一个唯一的排序,但所有合法的拓扑排序都符合上述规则。

u014114223的博客 974

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

拓扑排序及例题可达性统计

这篇文章介绍了拓扑排序的概念及其实现过程。拓扑排序是针对有向无环图的一种排序方法,通过将顶点排成线性序列,确保每条有向边的起点都排在终点之前。文章详细说明了拓扑排序的三个步骤:记录顶点入度、寻找入度为零的点并进行队列操作、输出排序结果。同时提供了两个例题的代码实现,展示了如何用拓扑排序判断图中是否有环以及计算图中各点的可达性统计。文章最后还通过bitset优化了可达性统计的计算效率。

2403_88489850的博客 288

可达性统计(拓扑排序模板,bitset)

我们还能不能再见面我向上天苦苦求了几千年愿意用几世换我们一世情缘希望可以感动上天。

ZZZS0516的博客 1063

「拓扑排序」可达性统计

可达性统计 原题链接:可达性统计 题目大意 给你一张\(n\)个点\(m\)条边的有向无环图,分别统计从每个点出发能够到达的点的数量 题目题解 看到题意就知道要用到拓扑排序,但是拓扑排序的理论复杂度在30000的极限条件下会超时,这个时候我们考虑使用 \(bitset\),一个很好用的代替bool的防卡常技巧,详细的说明这里不说,可以去百度上查看相关运用 //#define fre ye...

bachayou2102的博客 226

可达性统计 拓扑排序,dp,bitset

题目链接 https://www.acwing.com/problem/content/166/ 题目: 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。 输出格式 输出共N行,表示每个点能够到达的点的数量。 数据范围 1≤N,M≤30000 输入样例: 10...

lt的博客 392

拓扑排序,可达性统计

ACM题集:https://blog.youkuaiyun.com/weixin_39778570/article/details/83187443 拓扑排序 把入度为0的点加入列队,这些点一点在拓扑排序的前面。遍历列队依次出队,出队的点加入拓扑序,把出队的点的儿子的入度都减少一,可以近似认为该父节点已经不在树结构中了,再把入度为0的点加入列队,循环遍历直到所有点都进入拓扑序,即列队为空。 /*拓扑排序 */...

越看越喜欢啊 733

[拓扑排序] 可达性统计

可达性统计 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。 输出格式 输出共N行,表示每个点能够到达的点的数量。 数据范围 1≤N,M≤30000 输入样例: 10 10 3 8 2 3 2 5 5 9 5 9 2 3 3 9 4 8 2 10 4 9 输出样例: 1 6 ...

cp0328的博客 3957

可达性统计 Page99 拓扑排序+bitset

可达性统计 Page99 拓扑排序+bitset 一开始看到题解的状态压缩,寻思30000的数据应该如何压缩 STL的bitset支持位运算的修改,提供了简单的解决方法 bitset<5> b; b.count();//返回所有位中1的个数 b.size();//返回长度 b[i]=1;//修改某位为1 代码: #pragma GCC optimize(1) #pragma GCC...

想要一只银渐层 218

U161182 可达性统计(拓扑排序)

首先可以知道要求所有节点可以到达的点的个数,我们可以想到从拓扑排序的逆序顺序遍历节点,不能用加运算,因为加运算可能会加上一些重复的遍历过的点,比如1->2,2->4,1->4,此时算1到达的点的个数时,用加运算则会把4加俩边,为了防止加重复的点,考虑用或运算,每次只取集合的并集(注意位运算容器bitset<N> ret[N]及某点的查询ret[i].count(),并且只存储某一位是0还是1,U161182 可达性统计 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

m0_73746024的博客 180

可达性统计(拓扑排序+bitset)

可达性统计

eyuhaobanga的博客 253

拓扑排序(介绍+例题 可达性统计)

我是在做有向图的题中,接触到拓扑排序的。拓扑排序,是对一个有向无环图进行排序,可以将所有顶点排列成一条线,(如果a指向b,则a排在b的前面),****需要注意,这个排序只针对无环图。

2302_80707071的博客 692
上一篇: 资料整理
下一篇: 小猫爬山(简单的dfs)
Re:fused
博客等级 码龄9年 474粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值