20分求助
查看原帖
20分求助
597716
IT__windy楼主2022/2/23 19:08
样例和第一个点过了,没有找到明显逻辑错误
#include<bits/stdc++.h>
#define N 100010
using namespace std;
std::vector<int>g[N];
bool vis[N];
int m,n;
void add(int u,int v){
	g[u].push_back(v);
}
void dfs(int pos){
	printf("%d ",pos);
	for(int i=0;i<g[pos].size();i++){
		int point=g[pos][i];
		if(vis[point])continue;
		vis[point]=true;
		dfs(point);
	}
	return;
}
void bfs(int pos){
	std::queue<int>q;
	q.push(pos);
	printf("%d ",pos);
	vis[pos]=true;
	while(!q.empty()){
		int f=q.front();
		for(int i=0;i<g[f].size();i++){
			int point=g[f][i];
			if(vis[point])continue;
			vis[point]=true;
			q.push(point);
			printf("%d ",point);
		}
		q.pop();
	}
	return;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		add(u,v);
	}
	for(int i=1;i<=n;i++)sort(g[i].begin(),g[i].end());
	dfs(1);
	printf("\n");
	memset(vis,false,sizeof(vis));
	bfs(1);
	return 0;
}
2022/2/23 19:08
加载中...