两串看似相同但本质不同的代码
  • 板块灌水区
  • 楼主denominator
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/12/28 18:16
  • 上次更新2023/10/24 06:18:24
查看原帖
两串看似相同但本质不同的代码
174009
denominator楼主2022/12/28 18:16

RT。

代码 1:

void dfs (int u, int fa) {
	for (int i = h[u]; i != 0; i = a[i].nxt) {
		int v = a[i].to;
		if (v == fa) {
			continue;
		}
		dfs (v, u);
		if (b[v] != 0) {
			cnt++;
		}
	}
}

代码 2:

void dfs (int u, int fa) {
	for (int i = h[u]; i != 0; i = a[i].nxt) {
		int v = a[i].to;
		if (v == fa) {
			continue;
		}
		if (b[v] > 0) {
			dfs (v, u);
			cnt++;
		}
	}
	for (int i = h[u]; i != 0; i = a[i].nxt) {
		int v = a[i].to;
		if (v == fa) {
			continue;
		}
		if (b[v] < 0) {
			dfs (v, u);
			cnt++;
		}
	}
}

(其中 a[],h[] 是链式前向星的因素,遍历一棵树)

运行得到的 cnt 值并不相同。试问原因。

2022/12/28 18:16
加载中...