遍历图(dfs)

简介: 遍历图(dfs)

题目描述



给出N 个点,M 条边的有向图,对于每个点 v,求A(v) 表示从点 v出发,能到达的编号最大的点。


输入格式



第1 行,2 个整数 N,M。

接下来 M行,每行2个整数 Ui,Vi,表示边 (Ui,Vi)。点用 1,2,⋯,N编号。


输出格式



N 个整数 A(1),A(2),⋯,A(N)。


输入输出样例



输入 #1复制

4 3
1 2
2 4
4 3


输出 #1复制

4 4 3 4


说明/提示



• 对于60% 的数据, 1≤N.M≤ 10^3;

• 对于100% 的数据,  1≤N,M≤10^5 。


#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define MAXL 100010
int N, M, A[MAXL];
vector<int> G[MAXL]; //vector存图 
void dfs(int x, int d) {
  if(A[x]) return; //访问过 就是不为0 
  A[x] = d;
  for(int i=0; i<G[x].size(); i++)  
    dfs(G[x][i], d);
}   
int main() {
  int u, v;
  scanf("%d%d", &N, &M);
  for(int i=1; i<=M; i++) {
    scanf("%d%d", &u, &v);
    G[v].push_back(u); //反向建边 
  }
  for(int i=N; i; i--) 
  dfs(i, i); 
  for(int i=1; i<=N; i++) 
  printf("%d ", A[i]);
  printf("\n");
  return 0;
}


相关文章
|
存储 NoSQL API
redis的5种对象与8种数据结构(一)
【说明】  本文是对redis对象、数据结构的整理说明,因为内容较多,本篇文章只对对象结构,1种对象——字符串对象,以及字符串对象所对应的两种编码——raw和embstr,进行了详细介绍,其余对象及编码将再下一篇文章中进行详细说明。
14051 0
|
11月前
|
消息中间件 Java 开发工具
【实践】快速学会使用云消息队列RabbitMQ版
本次分享的主题是快速学会使用云消息队列RabbitMQ版的实践。内容包括:如何创建和配置RabbitMQ实例,如Vhost、Exchange、Queue等;如何通过阿里云控制台管理静态用户名密码和AccessKey;以及如何使用RabbitMQ开源客户端进行消息生产和消费测试。最后介绍了实验资源的回收步骤,确保资源合理利用。通过详细的操作指南,帮助用户快速上手并掌握RabbitMQ的使用方法。
939 10
|
6月前
|
人工智能 自然语言处理 JavaScript
关于API调用速率问题,能否增大一些?另外我想基于其开发实际场景应用,不知是否提供一些相关支持
这是一个关于开源多语言切换项目的简介:作者开发了一款自动为网页提供多语言切换的开源项目,已广泛应用于众多网站和项目。该项目现已对接通义千问(qwen3),但由于接口速度限制成为瓶颈,希望阿里云能提高请求速率。此外,作者询问是否能获得阿里支持,例如提升接口速率、用户推荐分成、以及文档展示支持等,以进一步推广多语言能力至更多应用场景。项目地址:https://github.com/xnx3/translate
135 0
|
11月前
|
API 网络架构
一文带你了解 Flutter 路由
一文带你了解 Flutter 路由
375 5
|
SQL 数据采集 数据挖掘
Pandas 教程
10月更文挑战第25天
240 2
|
存储 关系型数据库 MySQL
mysql的begin end嵌套
本文介绍了MySQL中如何使用`begin`和`end`关键字进行事务或存储过程的嵌套操作,并强调了编写嵌套代码时需要注意作用域的重要性。
218 0
mysql的begin end嵌套
|
存储 Linux Serverless
深入理解Linux虚拟内存管理(六)(上)
深入理解Linux虚拟内存管理(六)
237 0
|
Ubuntu Linux 网络安全
在Linux中,如何配置Samba或NFS文件共享?
在Linux中,如何配置Samba或NFS文件共享?
|
机器学习/深度学习 编解码 人工智能
走进 Sora 的世界:视频重建调研与创新路线图
走进 Sora 的世界:视频重建调研与创新路线图
338 0