广搜时输出顺序的问题
查看原帖
广搜时输出顺序的问题
1062532
MinLand楼主2024/6/14 14:18
using ll = long long;
vector<int>g[N];
queue<int>q;
int n, deg[N];

这样写是可以AC的

	for (int i = 1; i <= n; i++) {
		if (deg[i] == 0) {
			q.push(i);
		}
	}
	while (q.size()) {
		int u = q.front();
		q.pop();
		printf("%d ", u);
		for (int v : g[u]) {
			deg[v]--;
			if (deg[v] == 0) {
				q.push(v);
			}
		}
	}

但是如果改成这样的就会报WA,2,5,6

		for (int i = 1; i <= n; i++) {
			if (deg[i] == 0) {
				printf("%d", i);
				q.push(i);
				break;
			}
		}
		while (q.size()) {
			int u = q.front();
			q.pop();
			for (int v : g[u]) {
				deg[v]--;
				if (deg[v] == 0) {
					q.push(v);
					printf(" %d", v);
				}
			}
		}
2024/6/14 14:18
加载中...