关于加边
查看原帖
关于加边
147401
koishi_offical楼主2021/3/4 13:46

为什么我加单向边会WA,而加双向边就AC了?

dfs函数代码:

void dfs1(int x,int f,int deep)
  {
  	fa[x]=f;
  	dep[x]=deep;
  	si[x]=1;
  	int maxson=-1;
  	for(int i=h[x];i;i=ne[i])
      if(e[i]!=f)
  	    {
  	    	dfs1(e[i],x,deep+1);
  	    	si[x]+=si[e[i]];
  	    	if(si[e[i]]>maxson) son[x]=e[i],maxson=si[e[i]];
        }
  }
int dfn[N],num,top[N];
void dfs2(int x,int topf)
  {
  	dfn[x]=++num;
  	a[num]=tr[x];
  	top[x]=topf;
  	if(!son[x]) return;
  	dfs2(son[x],topf);
  	for(int i=h[x];i;i=ne[i])
  	  if(e[i]!=son[x]&&e[i]!=fa[x]) dfs2(e[i],e[i]);
  }
2021/3/4 13:46
加载中...