20分求助
查看原帖
20分求助
986907
Q_Ql楼主2024/10/17 17:20
#include<bits/stdc++.h>
using namespace std;
int head[114514]={0},cnt=1,n,m;
bool v[114514]={false};
struct SB{
	int aa,bb;
	bool operator<(const SB &x)const{
		return x.bb<bb;
	}
}k[114514];
struct tree{
	int to,nt;
}egde[114514];
void add(int a,int b){
	egde[cnt].nt=head[a],egde[cnt].to=b,head[a]=cnt++;
}
void dfs(int x){
	v[x]=true;
	cout<<x<<" ";
	for(int i=head[x];i;i=egde[i].nt){
		int s=egde[i].to;
		if(!v[s])dfs(s);
	}
}
void bfs(){
	queue<int>hi;
	hi.push(1);
	v[1]=true;
	while(!hi.empty()){
		int ha=hi.front();
		hi.pop();
		cout<<ha<<" ";
		for(int i=head[ha];i;i=egde[i].nt){
			int s=egde[i].to;
			if(!v[s])v[s]=true,hi.push(s);
		}
	}
}
int main(){
	cin.tie(),cout.tie();
	cin>>n>>m;
	int z,x;
	for(int i=1;i<=m;i++)cin>>k[i].aa>>k[i].bb;
	sort(k+1,k+1+m);
	for(int i=1;i<=m;i++)add(k[i].aa,k[i].bb);
	dfs(1);
	cout<<endl;
	memset(v,false,n+12);
	bfs();
} 
2024/10/17 17:20
加载中...