我有一个 大 大 的疑惑
查看原帖
我有一个 大 大 的疑惑
361794
Gyan楼主2021/11/14 21:37

萌新刚学淀粉质

学的 froggy 题解的双指针写法

我的 AC 代码: 100代码

inline int getroot(int);//返回重心
inline void calc(int);//计算答案

void dfz(int x) {//淀粉质
//	x = getroot(x);
	calc(x);
	del[x] = 1;//标记删除
	for (rg int e=head[x], y=to[e]; e; y=to[e=nxt[e]]) {
		if (del[y]) continue;
		dfz(getroot(y));
	}
}
int main() {
	//输入...
    
	dfz(getroot(1));
    
	//输出...

	return 0;
}

上面的代码是没问题的

但是我又把它改成了这样: 60代码

inline int getroot(int);//返回重心
inline void calc(int);//计算答案

void dfz(int x) {
	x = getroot(x);//把根节点更新为重心
	calc(x);
	del[x] = 1;//标记删除
	for (rg int e=head[x], y=to[e]; e; y=to[e=nxt[e]]) {
		if (del[y]) continue;
		dfz(y);
	}
}
int main() {
	//输入...
    
	dfz(1);
    
	//输出...

	return 0;
}

然后最后三个点就 T 飞了...

(实测 #7 要跑 7 秒)

求问大佬这是为什么....

2021/11/14 21:37
加载中...