警钟撅烂
  • 板块学术版
  • 楼主xiaosuan
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/3 16:50
  • 上次更新2023/11/3 06:07:58
查看原帖
警钟撅烂
529574
xiaosuan楼主2023/8/3 16:50

在访问某一点所在的并查集的属性的时候,要先使用求根函数。

原代码

void cal_ans() {
	dfs_ans(1, -1);
	int ans = 0;
	for (int i = 1; i <= n; ++i) {
		if (getfa(i) == i) {
			assf(ans, sfad, sfml(sfdv(dp[1][0], sfml(dp[i][0], (i == 1 ? 1 : 2))), dp[i][1]));
		}
	}
	printf("%d\n", ans);
	return;
}

修改后代码

void cal_ans() {
	dfs_ans(getfa(1), -1);
	int ans = 0;
	for (int i = 1; i <= n; ++i) {
		if (getfa(i) == i) {
			assf(ans, sfad, sfml(sfdv(dp[getfa(1)][0], sfml(dp[i][0], (F(i, 1) ? 1 : 2))), dp[i][1]));
		}
	}
	printf("%d\n", ans);
	return;
}
2023/8/3 16:50
加载中...