为什么有多或少行

P2731 [USACO3.3] 骑马修栅栏 Riding the Fences

wf1594937223 @ 2017-05-04 14:02:29

# include <stdio.h>
# include <algorithm>
int b[510][510],c[510],d[510][510],e[510],n,l;
int yes()
{
    int i,j,k;
    for(j=1;j<=n;j++)
        for(k=1;k<=c[j];k++)
            if(d[b[j][k]][j]==0)
                return 0;
    return 1;
}
void dfs(int a)
{
    int i,j,k;
    for(i=1;i<=c[a];i++)
    {
        e[++e[0]]=a;
        if(d[b[a][i]][a]==0)
        {
            printf("%d\n",a);
            d[b[a][i]][a]=1;
            d[a][b[a][i]]=1;
            dfs(b[a][i]);
        }
        else
        {
            if(yes()==1 && l==0)
            {
                printf("%d",a);
                l=1;
            }
            else
                e[0]--;
        }
    }
    return;
}
int main()
{
    int i,j,m,h=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&j,&m);
        b[j][++c[j]]=m;
        b[m][++c[m]]=j;
    }
    for(i=1;i<=n;i++)
        if(c[i]%2==1)
        {
            h=i;
            break;
        }
    for(i=1;i<=500;i++)
        std::sort(b[i]+1,b[i]+c[i]+1);
    if(h==0)
        h=1;
    dfs(h);
    return 0;
}

by Miss灬hxh @ 2017-06-26 16:34:01

为什么,,,


by 世代空明 @ 2017-06-26 16:35:55

为什么


by Dispwnl @ 2017-08-14 18:21:27

为啥啊。。


by Captain_Paul @ 2017-08-14 18:43:47

为什么。。。


by Victorique @ 2017-08-14 21:57:59

为什么


by Adove @ 2017-08-15 07:00:12

测试数据有两个点之间重复栅栏的


|