top1编程
← 返回题目
题解

【入门】欧拉路

1 条题解

  • 0
    @ 2026-7-29 0:19:09
    #include<bits/stdc++.h>
    using namespace std;
    int a[30][30]; 
    int n,e;
    int d[30];  
    int r[50];   
    int k=0;     
    void dfs(int x)
    {
        for(int i=1;i<=n;i++)
        {
            if(a[x][i]==1)
            {
                a[x][i]=0;
                a[i][x]=0;
                dfs(i);
            }
        }
        r[++k]=x;
    }
    int main()
    {
        cin>>n>>e;
        int x,y;
        for(int i=1;i<=e;i++)
        {
            cin>>x>>y;
            a[x][y]=1;
            a[y][x]=1;
            d[x]++;
            d[y]++;
        }
        int s=1;
        for(int i=n;i>=1;i--)
        {
            if(d[i]%2==1)
            {
                s=i;
                break;
            }
        }
        dfs(s);  
        for(int i=k;i>=1;i--) cout<< r[i]<< " ";
        return 0;
    }
    
    • 1