C/C++教程

AcWing 1124. 骑马修栅栏

本文主要是介绍AcWing 1124. 骑马修栅栏,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

原题链接
考察:欧拉路径
思路:
  根本不难,注意\(ans\)数组不要开小了.....

Code

#include <iostream>
#include <cstring>
using namespace std;
const int N = 510;
int m,g[N][N],d[N],maxn,ans[N<<2],cnt,minv = N;
void dfs(int u)
{
    for(int i=minv;i<=maxn;i++)
    {
        if(g[u][i])
        {
            g[u][i]--,g[i][u]--;
            dfs(i);
        }
    }
    ans[++cnt] = u;
}
int main()
{
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        int a,b; scanf("%d%d",&a,&b);
        g[a][b]++,g[b][a]++;
        d[a]++,d[b]++;
        maxn = max(a,maxn),minv = min(a,minv);
        maxn = max(b,maxn),minv = min(b,minv);
    }
    int sta = minv;
    for(int i=minv;i<=maxn;i++)
      if(d[i]&1)
      {
          sta = i;
          break;
      }
    dfs(sta);
    for(int i=cnt;i>=1;i--) printf("%d\n",ans[i]);
    return 0;
}
这篇关于AcWing 1124. 骑马修栅栏的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!