这一题是使用DFS实现欧拉回路。具体AC代码如下,第一次写博客,如有错误,欢迎指正。
#include <iostream>
#include <vector>
using namespace std;
#define maxn 50000+10
int n,m;
struct Edge
{
int v;
bool vis;
Edge(int v,bool vis):v(v),vis(vis){}
};
vector<Edge>G[maxn];
void init()
{
for (int i = 0;i<=n;i++)
G[i].clear();
}
void euler(int u)
{
for (int i = 0;i<G[u].size();i++)
{
if (!G[u][i].vis)
{
G[u][i].vis=1;
euler(G[u][i].v);
}
}
cout<<u<<endl;
}
int main()
{
cin>>n>>m;
for (int i = 1;i<=m;i++)
{
int u,v;
cin>>u>>v;
G[u].push_back(Edge(v,false));
G[v].push_back(Edge(u,false));
}
euler(1);
std::ios::sync_with_stdio(false);
return 0;
}