您的位置:首页 > 其它

POJ2230-还是简单的欧拉回路求解

2012-08-17 16:52 162 查看
#include <cstring>
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;

const int NN=10002;

vector<int> ans;
vector<int> adj[NN];
int n,m,cur[NN];

void dfs(int u)
{
    for (int &i=++cur[u]; i<adj[u].size(); i++)
    {
        int v=adj[u][i];
        dfs(v);
        ans.push_back(v);
    }
}

int main()
{
    scanf("%d%d",&n,&m);

    for (int i=1; i<=n; i++)
    {
        adj[i].clear();
        cur[i]=-1;
    }

    for (int i=1; i<=m; i++)
    {
        int u,v;
        scanf("%d%d",&u,&v);
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    ans.clear();
    dfs(1);
    printf("1\n");
    for (int i=ans.size()-1; i>=0; i--) printf("%d\n",ans[i]);
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: