164. 可达性统计(拓扑排序+数位dp)[通俗易懂]

164. 可达性统计(拓扑排序+数位dp)[通俗易懂]给定一张 N 个点 M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数 N,M,接下来 M 行每行两个整数 x,y,表示从 x 到 y 的一条有向边。输出格式输出共 N 行,表示每个点能够到达的点的数量。数据范围1≤N,M≤30000输入样例:10 103 82 32 55 95 92 33 94 82 104 9输出样例:1633211111#include<bits/stdc++.h>using

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一张 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
2
1
1
1
1
1
#include<bits/stdc++.h>
using namespace std;
const int N = 3e4 + 10;
const int M = 3e4 + 10;
struct Edge{ 
   
    int v,next;
}edge[M];
int head[N],cnt;
void add(int u,int v){ 
   
    edge[cnt].v = v;
    edge[cnt].next = head[u];
    head[u] = cnt ++;
}
bitset<N>f[N];
int in[N],q[N],hh = 0,tt = 0;
int main(){ 
   
    int n,m;
    cin>>n>>m;
    int x,y;
    memset(head,-1,sizeof head);
    for(int i = 0;i < m;i ++){ 
   
        cin>>x>>y;
        add(x,y),in[y] ++;
    }
    for(int i = 1;i <= n;i ++)if(!in[i])q[tt ++] = i;
    while(hh < tt){ 
   
        int t = q[hh ++];
        for(int i = head[t];~i;i = edge[i].next){ 
   
            int v = edge[i].v;
            if((-- in[v]) == 0)q[tt ++] = v;
        }
    }
    for(int i = tt - 1;i >= 0;i --){ 
   
        int j = q[i];
        f[j][j] = 1;
        for(int k = head[j];~k;k = edge[k].next){ 
   
            int v = edge[k].v;
            f[j] |= f[v];
        }
    }
    for(int i = 1;i <= n;i ++){ 
   
        cout<<f[i].count()<<endl;
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169088.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript的三种弹出提示框(alert、confirm、prompt)

    JavaScript的三种弹出提示框(alert、confirm、prompt)三种提示框 alert confirm prompt alert alert 方法是显示一条弹出提示消息和确认按钮的警告框 需要注意的是 alert 是一个阻塞的函数 如果我们不点确认按钮 后面的内容就不会加载出来 使用方式 alert 想要提示的文本内容 样例代码 DOCTYPE tml html head metacharset utf 8 script a script metacharset utf 8 head html

    2025年10月1日
    4
  • 比特币p2p协议_协议栈p2p

    比特币p2p协议_协议栈p2p比特币网络节点具有所有四个功能(理论上的很多来自《精通比特币》):钱包:用户钱包也可以作为全节点的一部分(桌面比特币客户端中比较常见);当前,越来越多的用户钱包都是SPV节点(诸如智能手机)矿工:挖矿节点通过运行在特殊硬件设备上的工作量证明(proof-of-work)算法,以相互竞争的方式创建新的区块,一些挖矿节点同时也是全节点,保有区块链的完整拷贝;还有一些参与矿池挖矿的节点是轻量级节…

    2022年8月30日
    5
  • 完整版—Android studio入门教程

    完整版—Android studio入门教程AS的安装及第一个AS中android项目的搭建前言:前段时间公司搞了个”校企合作”的项目,要求公司人员去学校对学生进行阶段性的专业培训,荣幸的我被派去当了回“老师”;哈哈,真的有点“打肿脸充胖子”的感觉;不过,也算是复习下as的安装过程吧,顺便有空了就记录下来,后面万一忘了也好查看。正文:首先需要确定好电脑是否有安装java环境:直接电脑桌面windows+R输入cmd…

    2022年6月7日
    44
  • html怎么隐藏播放器_css遮罩

    html怎么隐藏播放器_css遮罩<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><metahttp-equiv=”X-UA-Compatible”content=”ie=edge”><title>视.

    2025年5月26日
    8
  • 免费的api数据接口_期货数据接口api

    免费的api数据接口_期货数据接口api一些免费数据API接口

    2026年1月19日
    4
  • 个人整理的一些net 开源项目

    个人整理的一些net 开源项目net开源商城:BrnMall地址 http://www.brnshop.com/ 技术架构很不错;官方提供技术支持,有博客有视频介绍;官方技术博客:http://www.cnblogs.com/wheretime/官方视频下载地址:http://pan.baidu.com/s/1dDCKQXj真乃业界良心之作;风格和天猫京东各大商城接近;后台都很好;

    2022年7月15日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号