4RE求解
查看原帖
4RE求解
576807
URbit楼主2022/10/23 20:32

代码如下

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::queue;
using std::sort;

struct Point
{
	int data;
	vector<int> vect;
};

class Solution
{
public:
	int visited[100100];
	Point P[100100];
	void DFS(int x);
	void BFS();
};

void Solution::DFS(int x)
{
	cout << x << " ";
	for (int i = 0; i < P[x].vect.size(); i++)
	{
		if (visited[P[x].vect[i]] == 0)
		{
			visited[P[x].vect[i]] = 1;
			DFS(P[x].vect[i]);
		}
	}
}

void Solution::BFS()
{
	queue<int> Q;
	Q.push(1);
	while (!Q.empty())
	{
		int x = Q.front();
		Q.pop();
		cout << x << " ";
		for (int i = 0; i < P[x].vect.size(); i++)
		{
			if (visited[P[x].vect[i]] == 0)
			{
				visited[P[x].vect[i]] = 1;
				Q.push(P[x].vect[i]);
			}
		}
	}
}

Solution S;

int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		S.P[i].data = i;
	}
	for (int i = 1; i <= m; i++)
	{
		int x, y;
		cin >> x >> y;
		S.P[x].vect.push_back(y);
	}
	for (int i = 1; i <= m; i++)
		sort(S.P[i].vect.begin(), S.P[i].vect.end());
	for (int i = 1; i <= n; i++)
		S.visited[i] = 0;
	S.DFS(1);
	cout << endl;

	for (int i = 1; i <= n; i++)
		S.visited[i] = 0;
	S.BFS();

	return 0;
}
2022/10/23 20:32
加载中...