不理解,玄关
查看原帖
不理解,玄关
1252442
lucy2012楼主2024/5/16 22:06

看题解区的大佬们都说要判断有没有遍历过了,可我这个没判断过了,为什么?

#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,a[100010];
vector<int> pic[100010];
void dfs(int u,int v){
   //这里没判断
	a[u]=v;
	for(int i=0;i<pic[u].size();i++){
		if(a[pic[u][i]]==0)
		    dfs(pic[u][i],v);
	} 
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		pic[v].push_back(u);
	}
	for(int i=n;i>=1;i--){
		if(a[i]==0)
		    dfs(i,i);
	}
	for(int i=1;i<=n;i++)
	    cout<<a[i]<<' ';
	return 0;
}
2024/5/16 22:06
加载中...