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

时间限制 : 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;
}
相关推荐
星火开发设计2 小时前
枚举类 enum class:强类型枚举的优势
linux·开发语言·c++·学习·算法·知识
嘴贱欠吻!7 小时前
Flutter鸿蒙开发指南(七):轮播图搜索框和导航栏
算法·flutter·图搜索算法
张祥6422889048 小时前
误差理论与测量平差基础笔记十
笔记·算法·机器学习
qq_192779878 小时前
C++模块化编程指南
开发语言·c++·算法
代码村新手9 小时前
C++-String
开发语言·c++
cici1587410 小时前
大规模MIMO系统中Alamouti预编码的QPSK复用性能MATLAB仿真
算法·matlab·预编码算法
历程里程碑10 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
2501_9403152611 小时前
航电oj:首字母变大写
开发语言·c++·算法
lhxcc_fly12 小时前
手撕简易版的智能指针
c++·智能指针实现
CodeByV12 小时前
【算法题】多源BFS
算法