/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-18 10:04:24
* @LastEditTime: 2022-03-18 10:46:57
*/
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> v[100001];
int maxx[100001];
void dfs(int x,int d){
if(maxx[x]) return;
maxx[x] = d;
for(int i = 0; i < v[x].size();i ++)
dfs(v[x][i],d);
}
int main()
{
while(cin>>n>>m){
int x,y;
for(int i = 1;i <= m;i ++){
cin >> x >> y;
v[y].push_back(x);
}
for(int i = n;i >= 1;i --)
dfs(i,i);
for(int i = 1;i <=n;i ++)
cout << maxx[i] << " ";
}
}
P3916 图的遍历
最新推荐文章于 2025-12-18 16:28:22 发布
本文介绍了一种图遍历方法——深度优先搜索(DFS),通过C++代码实现从根节点开始遍历整个图,并找到每个节点的最大深度。在给定的边连接的图中,从最大的节点编号开始,递归地访问相邻节点,直至遍历所有节点。
580

被折叠的 条评论
为什么被折叠?



