1 条题解

  • 0
    @ 2025-10-8 16:50:34
    #include<bits/stdc++.h>
    using namespace std;
    const int N=210;
    vector<int>G[N];
    int n,m,b[N];bool v[N],flg;
    void dfs(int x,int dep)
    {
        if(dep>n){flg=1;return ;}
        for(int y:G[x])if(v[y]==0)
        {
            b[dep]=y;v[y]=1;
            dfs(y,dep+1);
            if(flg==1) return;
            b[dep]=0;v[y]=0;
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1,x,y;i<=m;i++)scanf("%d%d",&x,&y), G[x].push_back(y);
    
        memset(v,0,sizeof(v));
        b[1]=1;v[1]=1;flg=false;//当前在1号点(一开始可以从任意点出发),准备找第2个点
        dfs(1,2);
    
        if(flg==false)printf("NO\n");
        else for(int i=1;i<=n;i++)printf("%d ",b[i]);
    
        return 0;
    }
    
    • 1

    *【哈密顿路径】哈密顿路径[scy]

    信息

    ID
    454
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    66
    已通过
    27
    上传者