在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;
dis[nxt.v]=dis[now]+nxt.val;
dfs(nxt.v,now);
}
}
错误标记:
void dfs(int now,int f)
{
if(dis[cyx]<dis[now]) cyx=now;
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);
}
}