60分求助。。。
查看原帖
60分求助。。。
289275
Terraria楼主2020/9/6 17:29
#include<bits/stdc++.h>
using namespace std;
vector<int> a[1000009];
bool gone[1000009];
int n,m;
void dfs(int num,int times){
	gone[num]=1;
	if(!times){
		cout<<num<<" ";
		return;
	}
	cout<<num<<" ";
	for(int i=0;i<a[num].size();i++){
		if(!gone[a[num][i]]) dfs(a[num][i],times-1);
	}
}
void bfs(){
	memset(gone,false,sizeof(gone));
	queue<int> que;
	que.push(1);
	while(!que.empty()){
		int num=que.front();
		cout<<num<<" ";
		gone[num]=true;
		for(int i=0;i<a[num].size();i++){
			if(!gone[a[num][i]]){
				que.push(a[num][i]);
				gone[a[num][i]]=1;
			}
		}
		que.pop();
	}
}
int main(){
	cin>>n>>m;
	memset(gone,false,sizeof(gone));
	for(int i=0;i<m;i++){
		int x,y;
		cin>>x>>y;
		a[x].push_back(y);
	}
	for(int i=0;i<n;i++){
		sort(a[i].begin(),a[i].end());
	}
	dfs(1,n);
	cout<<endl;
	bfs();
	return 0;
}
2020/9/6 17:29
加载中...