我做的第一道欧拉路径的题
说实话,这就一板子题…… 欧拉路径不会求的戳这里。 直接上代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define INF 0x7fffffff
#define ll long long
using namespace std;
int n,m,x,y,head[1200],cnt,map[1030][1030],d[1030],begin,s[1030],t;
void dfs(int k)
{
    for(register int i = 1; i <= n; i++)
    {
        if(map[k][i] > 0)
        {
            map[k][i] –;
            map[i][k] –;
            dfs(i);
        }
    }
    s[++t] = k;
}
int main()
{
    scanf(“%d”,&m);
    for(register int i = 1; i <= m; i++)
    {
        scanf(“%d%d”,&x,&y);
        map[x][y] ++;
        map[y][x] ++;
        n = max(n,x);
        n = max(n,y);
        d[x] ++;
        d[y] ++;
    }
    for(register int i = 1; i <= n; i++)
    {
        if(d[i] % 2 == 1)
        {
            begin = i;
            break;
        }
    }
    if(begin == 0) begin = 1;
    dfs(begin);
    for(register int i = t; i >0; i–) printf(“%d\n”,s[i]);
    printf(“\n”);
    return 0;
}

