80分,求助
查看原帖
80分,求助
1432340
KevinTYX楼主2025/6/27 11:58
#include<bits/stdc++.h>
using namespace std;
vector <int> g[100005];
bool vis[100005];
bool vis2[100005];
int n,m;
int i;
void dfs(int i)
{
	cout<<i<<" ";
	vis[i]=1;
	for(int j=0;j<g[i].size();j++)
	{
		if(!vis[g[i][j]])
		{
			dfs(g[i][j]);
		}
	}
}
void bfs(int i)
{
	vis2[i]=1;
	queue<int>q;
	q.push(i);
	while(!q.empty())
	{
		int now=q.front();
		cout<<now<<" ";
		for(int j=0;j<g[now].size();j++)
		{
			if(!vis2[g[now][j]])
			{
				q.push(g[now][j]);
				vis2[g[now][j]]=1;
			}
		}
		q.pop();
	}
}
int main()
{
	cin>>n>>m;
	for(i=1;i<=m;i++)
	{
		int u,v;
		cin>>u>>v;
		g[u].push_back(v);
	}
	for(i=1;i<=n;i++)
	{
		sort(g[i].begin(),g[i].end());
	}
	for(i=1;i<=n;i++)
	{
		if(!vis[i])
		{
			dfs(i);
		}
	}
	cout<<endl;
	for(i=1;i<=n;i++)
	{
		if(!vis2[i])
		{
			bfs(i);
		}
	}
	return 0;
 } 
2025/6/27 11:58
加载中...