POJ2230 Watchcow 欧拉回路路径

来源:互联网 发布:php 读取文件过程 编辑:程序博客网 时间:2024/06/05 13:26

题目链接:http://poj.org/problem?id=2230


题目大意:相当于给出一个有向图,求出一条欧拉回路,并输出路径。


分析:题中说是每条路都正反走两边,其实就是相当于就是连接两个顶点的一个双向路径,每个方向的路径都走一遍。


实现代码如下:

#include <cstdio>#include <cstring>using namespace std;const int M=50005;const int N=10005;typedef struct{    int to,nex;}EDGE;EDGE edge[M*2];int head[N],cnt;void add(int u,int v){    edge[cnt].to=v;    edge[cnt].nex=head[u];    head[u]=cnt++;}bool vis[M*2];void dfs(int x){    for(int i=head[x];i!=-1;i=edge[i].nex)      if(!vis[i])      {          vis[i]=true;          dfs(edge[i].to);      }    printf("%d\n",x);}int main(){    int n,m;    while(scanf("%d%d",&n,&m)!=-1)    {        cnt=0;        memset(vis,0,sizeof(vis));        memset(head,-1,sizeof(head));        for(int i=0;i<m;i++)        {            int u,v;            scanf("%d%d",&u,&v);            add(u,v);            add(v,u);        }        dfs(1);    }    return 0;}


0 0