提高:图论:强连通分量 图的遍历

时间限制 : 1 秒

内存限制 : 128 MB

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

输入

第 11 行 22 个整数 N,MN,M,表示点数和边数。

接下来 MM 行,每行 22 个整数 Ui,ViUi​,Vi​,表示边 (Ui,Vi)(Ui​,Vi​)。点用 1,2,...,N1,2,...,N 编号。

输出

一行 NN 个整数 A(1),A(2),...,A(N)A(1),A(2),...,A(N)。

样例
输入
复制代码
4 3
1 2
2 4
4 3
输出
复制代码
4 4 3 4
提示
  • 对于 60%60% 的数据,1≤N,M≤1031≤N,M≤103。
  • 对于 100%100% 的数据,1≤N,M≤1051≤N,M≤105。

---------------------------------------------------------------------------------------------------------------------------------代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+2;
int n,m,v[N];
vector<int>g[N];
void dfs(int x,int y)
{
	if(v[x]!=0) return;
	v[x]=y;
	for(int i=0;i<g[x].size();i++) dfs(g[x][i],y); 
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int a,b;
		cin>>a>>b;
		g[b].push_back(a);
	}
	for(int i=n;i>=1;i--)
	{
		dfs(i,i);
	}
	for(int i=1;i<=n;i++) cout<<v[i]<<" ";
	return 0;
}
相关推荐
phltxy4 小时前
C语言操作符详解
java·c语言·算法
RuoZoe5 小时前
从 2026 年 3 月 1 日开源,到 26.10.9:Jalium UI 半年时间到底走了多远?
c语言·c++
aqiu1111115 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
辰烨chenye6 小时前
LeetCode Hot 100 题解 · 哈希篇
算法·leetcode·哈希算法
罗西的思考6 小时前
DreamZero 与 DreamDojo:世界模型与策略的分层协同综合分析与对比
人工智能·算法·机器学习
鱼子星_6 小时前
【C++】继承和多态(上)
c++·笔记
玖玥拾7 小时前
LeetCode 219 存在重复元素 II
算法·leetcode·哈希算法·散列表
知无不研8 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴8 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生