求助,玄关
查看原帖
求助,玄关
199475
Niao_niao楼主2024/8/14 18:29

为什么题解里面要逆向保存

#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
int n,m,ans[MAXN];
vector<int>dp[MAXN];
void dfs(int x,int now){
	if(ans[x])return;
	ans[x]=now;
	for(int i=0;i<dp[x].size();i++){
		dfs(dp[x][i],now);
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		dp[x].push_back(y);
	}
	for(int i=n;i;i--){//原本是i从1到n,后面看题解的改了
		dfs(i,i);
	}
	for(int i=1;i<=n;i++){
		cout<<ans[i]<<' ';
	}
	
	return 0;
}
2024/8/14 18:29
加载中...