关于此题最小表示法做法中函数的一些疑问
查看原帖
关于此题最小表示法做法中函数的一些疑问
668765
atom_yan楼主2022/10/8 20:31
void dfs(int u,int fa){
	int cnt=0;
	f[u]="0";
	for(int i=head[u];i;i=e[i].Next){
		int v=e[i].to;
		if(v==fa)continue;
		dfs(v,u);
		g[++cnt]=f[v];
	}
	sort(g+1,g+cnt+1);
	for(int i=1;i<=cnt;++i)f[u]+=g[i];
	f[u]+="1";
}
void dfs(int u,int fa){
	int cnt=0;
	f[u]="0";
	for(int i=head[u];i;i=e[i].Next){
		int v=e[i].to;
		if(v==fa)continue;
		dfs(v,u);
	}
		 for(int i=head[u];i;i=e[i].Next){
	 	int v=e[i].to;
	 	if(v==fa)continue;
	 	g[++cnt]=f[v];
	}
	sort(g+1,g+cnt+1);
	for(int i=1;i<=cnt;++i)f[u]+=g[i];
	f[u]+="1";
}

两者中区别只在于g[]什么时候存储,但是第一个wa,第二个ac,有没有大佬能解释一下。

2022/10/8 20:31
加载中...