求调错
查看原帖
求调错
241838
microchip楼主2021/11/14 16:34

问题出现在bfs部分,为什么会有编号没输出

#include<bits/stdc++.h>
using namespace std;

queue<int> Q;
queue<int> q;
vector<int>vec[100050];
int n,m,len[100050];
bool flag[100050];

void dfs(int k){
	cout<<k<<' ';
	flag[k]=1;
	sort(vec[k].begin(),vec[k].end());
	for(int i=0;i<len[k];i++){
		if(flag[vec[k][i]])continue;
		dfs(vec[k][i]);
	}
}

void bfs(){
	memset(flag,false,sizeof(flag));
	Q.push(1);
	while(!Q.empty()){
		if(flag[Q.front()]){
			Q.pop();
			continue;
		}
		cout<<Q.front()<<' ';
		flag[Q.front()]=1;
		sort(vec[Q.front()].begin(),vec[Q.front()].end());
		for(int i=0;i<len[Q.front()];i++){
			q.push(vec[Q.front()][i]);
		}Q.pop();
		if(Q.empty()){
			while(!q.empty()){
				Q.push(q.front());
				q.pop();
			}
		}
	}
}

int main()
{
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int x,y;
		cin>>x>>y;
		len[x]++;
		vec[x].push_back(y);
	}
	dfs(1);
	cout<<endl;
	bfs();
	return 0;
}
2021/11/14 16:34
加载中...