最后两个RE求助qwq

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

天天写点代码 @ 2021-02-24 10:43:00

应该不是空间问题

#include<bits/stdc++.h>
using namespace std;
int g[505][505];
int path[1026];
int du[505];
int f,flag=1;
int min0=1000,min1=1000,min2=1000;
int max0,max1;
void print()
{   for(int i=1;i<=f+1;i++)
        cout<<path[i]<<endl;
}
void dfs(int i,int step)
{   if(flag)
    {   path[step]=i;//问题可能在这???
        if(step==f+1)
        {   print();
            flag=0;
            return ;
        }
        for(int j=1;i<=max0&&flag;j++)
            if(g[i][j])
            {   g[i][j]--;
                g[j][i]--;
                dfs(j,step+1);
            }
    }   
    return ;
}
int main()
{   cin>>f;
    for(int i=1;i<=f;i++)
    {   int x,y;
        cin>>x>>y;
        if(x<y) min1=x;
        else    min1=y;
        if(min0>min1) min0=min1;
        g[x][y]++;
        g[y][x]++;
        du[x]++;du[y]++;
        max0=max(max0,max(x,y));
    }
    for(int i=1;i<=500;i++)
        if(du[i]%2==1)
            if(min2>i) 
            {   min2=i;
                break;
            }
    if(min2!=1000) dfs(min2,1);
    else dfs(min0,1);
    return 0;
}

by Emptyhanded @ 2021-02-24 10:44:48

不晓得


by 天天写点代码 @ 2021-02-25 21:06:12

@牛子睿ovo 不知道


by winsun @ 2022-01-26 16:49:41

这组数据卡了你的代码:

4
1 2
1 3
1 4
3 4

这个dfs似乎不是你这么写的,可以参考题解。


|