BFS

㊗️:☀️☃️☃️☃️☀️  •  1个月前


#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int d[100][100];
bool vis[100];
int n, k, m, t,from,to;
void bfs(int t) {
	queue<int> Q;
	Q.push(t);
	vis[t] = true;
	while (!Q.empty()) {
		int node = Q.front(); Q.pop();
		cout << node << " ";
		for (int i = 0; i < k; i++) if (d[node][i] == 1 && !vis[i]) {
			Q.push(i);
			vis[i] = true;
		}
	}
}
int main() {
	cin >> n;
	for (int a = 0; a < n; a++) {
		cin >> k >> m >> t;
		memset(d, 0, sizeof d);
		memset(vis, 0, sizeof vis);
		for (int i = 0; i < m; i++) {
			cin >> from >> to;
			d[from][to] = 1;
			d[to][from] = 1;
		}
		bfs(t);
		for (int i = 0; i < k; i++) if (!vis[i]) bfs(i);
	}
	return 0;
}


评论:

请先登录,才能进行评论