迷,第一个点输出0,求dalao....

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

Hurt @ 2017-12-12 00:30:55

#include<bits/stdc++.h>
using namespace std;
int F,x,y;
int du[1055],tu[1055][1055];          //度,栅栏 
int cnt=0,s[1055];
int mn=9999999,mx=-9999999;
int k;
void dfs(int p)
{
    for(int i=mn;i<=mx;i++)
        if(tu[p][i])
        {
            tu[p][i]--;
            tu[i][p]--;
            dfs(i);
        }
    s[++cnt]=p;
}
int main()
{
    memset(tu,0,sizeof(tu));
    scanf("%d",&F);
    for(int i=1;i<=F;i++)
    {
        scanf("%d %d",&x,&y);
        mn=min(mn,min(x,y));
        mx=max(mx,max(x,y));
        du[x]++;
        du[y]++;
        tu[x][y]++;
        tu[y][x]++;
    }
    for(int i=mn;i<=mx;i++)
    {
        if(du[i]%2)
        {
            k=i;
            break;
        }
    }
    dfs(k);
    for(int i=cnt;i>=1;i--)
        printf("%d\n",s[i]);
    return 0;
}

|