求查错
查看原帖
求查错
1486528
qsworld楼主2025/6/27 12:07
#include<bits/stdc++.h>
using namespace std;

const int N=1e6+10;

bool vis[N];
vector<int>g[N];

bool cmp(int a,int b)
{
	return a<b;
}

void dfs(int i)
{
	int j;
	cout<<i<<" ";
	vis[i]=1;
	for(j=0;j<g[i].size();j++)
		if(!vis[g[i][j]])
			dfs(g[i][j]);
	
}

void bfs(int i)
{
	queue<int>q;
	q.push(i);
	vis[i]=1;
	while(!q.empty())
	{
		int now=q.front();
		cout<<now<<" ";
		for(int j=0;j<g[now].size();j++)
		{
			if(!vis[g[now][j]])
			{
				q.push(g[now][j]);		
				vis[g[now][j]]=1;
			}
			
		}						
		q.pop();	
	}
}

int main()
{
	int i,j;
	int u,v;
	int n,m;
	
	cin>>n>>m;
	for(i=1;i<=m;i++)
	{
		cin>>u>>v;
		g[u].push_back(v);
		sort(g[u].begin(),g[u].end(),cmp); 
	}
		
	for(i=1;i<=n;i++)
		if(!vis[i])dfs(i);
		
	memset(vis,0,sizeof(vis));
	cout<<endl;
	
	for(i=1;i<=n;i++)
		if(!vis[i])bfs(i);
	
	return 0;
}

2025/6/27 12:07
加载中...