提问
查看原帖
提问
379113
dtrthg楼主2023/6/7 15:34

在dfs中,若在循坏中标记父亲就会出错 (节点六亲不认),但在刚进入一个节点时标记就不会。code:

正确标记:

void dfs(int now,int f)
{
	if(dis[cyx]<dis[now]) cyx=now;
	fa[now]=f;
	fo(i,0,no[now].size()-1)
	{
		Node nxt=no[now][i];
		if(nxt.v==f||flag[nxt.v]) continue;
//		fa[nxt.v]=now;
		dis[nxt.v]=dis[now]+nxt.val;
		dfs(nxt.v,now);
	}
}

错误标记:

void dfs(int now,int f)
{
	if(dis[cyx]<dis[now]) cyx=now;
//	fa[now]=f;
	fo(i,0,no[now].size()-1)
	{
		Node nxt=no[now][i];
		if(nxt.v==f||flag[nxt.v]) continue;
		fa[nxt.v]=now;
		dis[nxt.v]=dis[now]+nxt.val;
		dfs(nxt.v,now);
	}
}
2023/6/7 15:34
加载中...