60分求助,T4个点
查看原帖
60分求助,T4个点
399941
曾治茗楼主2023/7/27 10:39
#include<bits/stdc++.h>

using namespace std;

int n,m,maxn=-1;

vector<int> mp[100000];
int st[1000010]={0};
int num[1000100]={0};
void dfs(int x){
	maxn=max(maxn,x);
	num[x]=maxn;
	st[x]=1;
	for(int i=0;i<mp[x].size();i++){
		int point=mp[x][i];
		if(st[point]==1) continue;
		if(num[point]>maxn){
			maxn=num[point];
			continue;
		}
		dfs(point);
		
	}
	st[x]=0;
	num[x]=0;
}

int main(){
 	cin >>n >> m;
 	for(int i=1;i<=m;i++){
 		int u,v;
		cin >> u >> v;
		mp[u].push_back(v);	
	}
	
	for(int i=1;i<=n;i++){
		dfs(i);
		cout << maxn << " ";
	//	memset(st,0,sizeof(st));
		maxn=0;
	}
	
	
	return 0;
}
2023/7/27 10:39
加载中...