当前位置: 首页 > news >正文

【题解-洛谷】P10480 可达性统计

题目:P10480 可达性统计

题目描述

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

输入格式

第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 x x x y y y 的一条有向边。

输出格式

输出共 N N N 行,表示每个点能够到达的点的数量。

输入输出样例 #1

输入 #1

10 10
3 8
2 3
2 5
5 9
5 9
2 3
3 9
4 8
2 10
4 9

输出 #1

1
6
3
3
2
1
1
1
1
1

说明/提示

测试数据满足 1 ≤ N , M ≤ 30000 1 \le N,M \le 30000 1N,M30000 1 ≤ x , y ≤ N 1 \le x,y \le N 1x,yN

代码(60分)

#include<iostream>
#include<cstring>using namespace std;const int MaxN = 30000 + 10;int N, M, h[MaxN], e[MaxN * 2], ne[MaxN * 2], idx, d[MaxN], q[MaxN], hh, tt = -1;void init(){memset(h, -1, sizeof h);
}void add(int a, int b){e[idx] = b;ne[idx] = h[a];h[a] = idx ++;
}int bfs(int u){memset(d, -1, sizeof d);hh = 0, tt = -1;q[++ tt] = u;d[u] = 0;int sum = 1;while(hh <= tt){int t = q[hh ++];for(int i = h[t]; i != -1; i = ne[i]){int j = e[i];if(d[j] == -1){q[++ tt] = j;d[j] = d[t] + 1;sum ++;}}}return sum;
}int main(){scanf("%d%d", &N, &M);init();while(M --){int a, b;scanf("%d%d", &a, &b);add(a, b);}for(int i = 1; i <= N; i ++){int res = bfs(i);printf("%d\n", res);}return 0;
}
http://www.xdnf.cn/news/960157.html

相关文章:

  • [USACO23FEB] Bakery S
  • libfmt: 现代C++的格式化工具库介绍与酷炫功能
  • 本地化部署 Dify 打造专属 AI 助手并嵌入网站
  • 4米铸铁划线平台在工业机械制造有哪些用途
  • 关键领域软件测试的挑战与 Gitee Test 实践探索
  • 树莓派超全系列教程文档--(59)树莓派摄像头rpicam-apps
  • 赞助打赏单页HTML源码(源码下载)
  • 龙虎榜——20250609
  • 买卖股票的最佳时机
  • 提取目标区域的Argo剖面数据(nc)
  • 【机械视觉】Halcon—【十二、边缘提取】
  • nnUNet V2修改网络——暴力替换网络为UNet++
  • 第1课 SiC MOSFET与 Si IGBT 基本参数对比
  • 解析“道作为序位生成器”的核心原理
  • 网页封装APP的原理:将网页转化为移动应用
  • aardio 自动识别验证码输入
  • 起重机起升机构的安全装置有哪些?
  • MS21147四路差分线驱动器可P2P兼容SN65MLVD047
  • Python异步编程:深入理解协程的原理与实践指南
  • 篇章一 论坛系统——前置知识
  • 【RAG排序】rag排序代码示例-简单版
  • 开发认知提升
  • 回环接口为什么会监听 IPv6 多播地址 ff02::1?
  • Oauth认证过程中可能会出现什么问题和漏洞?
  • 如何快速进行光伏发电量计算?
  • FAISS:高性能向量库
  • 【web应用】若依框架:若依框架中的页面跳转简介
  • Linux操作系统共享Windows操作系统的文件
  • 人脸识别备案材料明细
  • 从零基于Gazebo实现仿真车辆模型构建