#3 #5 WA 大佬求助!
查看原帖
#3 #5 WA 大佬求助!
719201
INT_1024楼主2022/11/12 16:37
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
vector<int> cnt[100005];
bool flag[100005];
void dfs(int nums){
	cout<<nums<<" ";
	flag[nums]=true;
	for(int i=0;i<cnt[nums].size();i++){
		if(flag[cnt[nums][i]]==0){
			dfs(cnt[nums][i]);
		}
	}
}
void bfs(int nums){
	flag[nums]=true;
	queue<int> q;
	q.push(nums);
	cout<<nums<<" ";
	while(!q.empty()){
		for(int i=0;i<cnt[q.front()].size();i++){
			if(flag[cnt[q.front()][i]]==0){
				flag[cnt[q.front()][i]]=true;
				cout<<cnt[q.front()][i]<<" ";
				q.push(cnt[q.front()][i]);
			}
		}
		q.pop();
	}
}
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int num1,num2;
		cin>>num1>>num2;
		cnt[num1].push_back(num2);
	}
	for(int i=1;i<n;i++){
		sort(cnt[i].begin(),cnt[i].end());
	}
	for(int i=1;i<=n;i++)
		if(!flag[i])
			dfs(i);
	cout<<endl;
	memset(flag,false,sizeof(flag));
	for(int i=1;i<=n;i++)
		if(!flag[i])
			bfs(i);
	return 0;
}
2022/11/12 16:37
加载中...