开 -O2 WA 离大谱了(不开能过)
  • 板块学术版
  • 楼主fanypcd
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/9/16 23:16
  • 上次更新2023/11/4 06:35:31
查看原帖
开 -O2 WA 离大谱了(不开能过)
90027
fanypcd楼主2021/9/16 23:16

RT

这道题:P1505 [国家集训队]旅游

代码太长就贴一部分,就是在更新边权的时候不去找相连的两个点中较小的点连边,而是记录每一条双向边(实际实现是两条单向边)所下放的节点编号,然后更新:

void dfs1(int u)
{
	size[u] = 1;
	for(int i = first[u]; i; i = Next[i])
	{
		int v = to[i];
		if(dep[v])
		{
			continue;
		}
		num[v] = w[i];
		bel[i] = bel[i ^ 1] = v;
		fa[v] = u;
		dep[v] = dep[u] + 1;
		dfs1(v);
		size[u] += size[v];
		if(!hson[u] || size[hson[u]] < size[v])
		{
			hson[u] = v;
		}
	}
	return;
}

(就是那个 bel)

T.updateval(1, dfn[bel[x << 1]], w); 然后这么调用(updateval 是写对了的,dfn 就是 dfs 序)。

结果不开 -O2 AC,开了就 WA on #12。

lz 要去睡觉了,大概率明天才会看这个帖子,请各位直接 @ 我。

2021/9/16 23:16
加载中...