A了,但是有一点疑问求解
查看原帖
A了,但是有一点疑问求解
407417
HerikoDeltana楼主2021/6/29 11:30

RT,最一开始我写的 DFS 是这样的:

int y;

bool DFS(int x)
{
    for(R int i=head[x];i;i=r[i].nex)
    {
        if(!vis[y=r[i].to])
        {
            vis[y]=1;
            if(!match[y] or DFS(match[y]))
            {
                match[y]=x;
                match[x]=y;
                return 1;
            }
        }
    }
    return 0;
}

这样的话只能过一个点(甚至连样例都过不了)

然后后来我把 y 的赋值拿了出来,就过了?

bool DFS(int x)
{
    for(R int i=head[x];i;i=r[i].nex)
    {

        int y=r[i].to;
        if(!vis[y])
        {
            vis[y]=1;
            if(!match[y] or DFS(match[y]))
            {
                match[y]=x;
                match[x]=y;
                return 1;
            }
        }
    }
    return 0;
}

不知道有什么区别,于是求助(

全部代码放在这里

2021/6/29 11:30
加载中...