zoukankan      html  css  js  c++  java
  • POJ2230 Watchcow(欧拉回路)

    题目链接

    分析:

    n个点,m条边,每条边仅且经过两次,输出路径。

    题目保证了必然存在一条这样的边,那么直接dfs搜索,搜索的时候把next标记下就可以了。

    不过虽然参考别人的过了,还是遇到很多问题,要仔细琢磨琢磨了。

    #include <stdio.h>
    
    #define MAXN 10010
    #define MAXM 100010
    
    struct node{
        int to;
        int next;
    }edge[MAXM];
    
    int head[MAXN], t, vis[MAXM];
    
    void Init(int n, int m){
        int i;
        t = 0;
        for(i=1; i<=n; i++) head[i] = -1;
        for(i=0; i<=m*2; i++) vis[i] = 0;
    }
    
    void add(int u, int v){
        edge[t].to = v;
        edge[t].next = head[u];
        head[u] = t++;
    }
    
    void euler(int u){
        int i;
        for(i=head[u]; i != -1; i = edge[i].next)if(!vis[i]){
            vis[i] = 1;
            euler(edge[i].to);
        }
        printf("%d\n", u);
    }
    
    int main(){
        int n, m, i, u, v;
    
        scanf("%d %d", &n, &m);
    
        Init(n, m);
    
        for(i=0; i<m; i++){
            scanf("%d %d", &u, &v);
            add(u, v); add(v, u);
        }
    
        euler(1);
    
        return 0;
    }
  • 相关阅读:
    python
    python
    python
    python
    python
    python-接口自动化 token 的处理
    如何顺利度过试用期?
    印象深刻-bug汇总
    go 实现1000以内的数字,输入35 输出三十五
    jenkins 汉化
  • 原文地址:https://www.cnblogs.com/tanhehe/p/2924010.html
Copyright © 2011-2022 走看看