1341:【例题】一笔画问题


#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m,d[N];
bool g[N][N];
int k,a[N];
int dfs(int u){
    for(int i=1;i<=n;i++){
        if(g[u][i]){
            g[u][i]=g[i][u]=0;
            dfs(i);
        }
    }
    k++;
    a[k]=u;
}

int main(){
    cin>>n>>m;
    int u,v;
    for(int i=1;i<=m;i++){
        cin>>u>>v;
        g[u][v]=g[v][u]=1;
        d[u]++;
        d[v]++;
    
    }
    int st=1;
    for(int i=1;i<=n;i++){
        if(d[i]%2!=0){
            st=i;
            break;
        }
    }
        
    dfs(st);
    for(int i=1;i<=k;i++){
        cout << a[i] <<" ";
    }
    cout<<endl;
    return 0;
}

在一本通中,此代码的点六一直都是错的,例题都是正确的,也不知道错哪了,请各位!

有一些问题 比如k没有初始值;dfs函数没有return 等。特别是k没初始化是不行的