WA四个点求助iwiiiii
查看原帖
WA四个点求助iwiiiii
373334
biggay002楼主2023/7/17 17:54

这是代码qwq

#include <bits/stdc++.h>

using namespace std;

int n , m;
vector <int> g[100010];
bool vis[100010];
queue <int> q;
bool a[100010];
void dfs(int u)
{
	cout << u << " ";
	vis[u] = true;
	for (int i = 0; i < g[u].size(); i++)
	{
		if (a[g[u][i]]== true)
		{
			if (vis[g[u][i]] == false)
			{
				dfs(g[u][i]);
			}
		}
		 
	}
}

void bfs(int u)
{
	if (q.empty())
	{
		return ;
	}
	for (int i = 0; i < g[u].size(); i++)
	{
		if (a[g[u][i]] == true)
		{
			if (vis[g[u][i]] == false)
			{
				q.push(g[u][i]);
				vis[g[u][i]] = true;
			}
			
		}
	}
	cout << q.front() << " ";
	int awa = q.front();
	q.pop();
	bfs(awa);
	
	
}
int main()
{
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
	{
		int x , y;
		cin  >> x >> y;
		a[x] = true;
		a[y] = true;
		g[x].push_back(y);
		
	
	}
	for (int i = 1; i <= n; i++)
	{
		if (a[i] == true)
		{
			sort(g[i].begin(),g[i].end());
		}
	
	}
	
	for (int i = 1; i <= n; i++)
	{
		if (a[i] == true)
		{
			if (vis[i] == false)
			{
				dfs(i);
			}
		}
		
		
	}
	cout << endl; 
	memset(vis , 0 , sizeof(vis));
	for (int i = 1; i <= n; i++)
	{
		if (a[i] == true)
		{
			q.push(i);
			bfs(i);
			break;
		}
	}
	
	

	return 0;
}

2023/7/17 17:54
加载中...