骑马修栅栏

来源:互联网 发布:淘宝返还网 编辑:程序博客网 时间:2024/03/29 01:46
#include<cstdio>using namespace std;int a[999][999];int n,m;int z=1;int b[9999];int t=0;int du[9999];void dfs(int x){    int i;    for(i=1;i<=500;i++)    {        if(a[x][i]!=0)        {        a[x][i]--;        a[i][x]--;        dfs(i);        }    }    b[++t]=x;}int main(){    scanf("%d",&n);    for(int i=1;i<=n;i++)    {        int x,y;        scanf("%d%d",&x,&y);        a[x][y]++;        a[y][x]++;        du[x]++;        du[y]++;    }    for(int i=1;i<=500;i++)    {        if(du[i]%2==1){        z=i;break;  //找奇点        }    }    dfs(z);    for(int i=t;i>=1;i--) printf("%d\n",b[i]);//倒着输出    return 0;}

找欧拉回路,从1~500搜

1 0
原创粉丝点击