zoukankan      html  css  js  c++  java
  • poj1041 【无向图欧拉回路】 按最小升序输出

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

    题目大意:

    题目大意:一个城镇有n个二叉路口,这些路口由m条街道连接,某人想要从某个路口出发,经过所有的街道且每条街道只走一次,再回到出发点,让找出一个可行的路线,依次输出经过的街道编号,如果有多条路线,选择字典序最小的一条输出。

    #include <cstdio>
    #include <cstring>
    #define max(a,b) a>b?a:b
    #define min(a,b) a<b?a:b
    #define mem(a) memset(a,0,sizeof(a))
    
    int roa[50][2000];                              //这种定义二维数组的方式要牢记
    int vis[2000];
    int ind[100], maxn;                            //ind数组判断该点的度数的奇偶
    int output[2000], ans;
    
    void dfs(int s)
    {
        int i;
        for (i = 1; i <=maxn; i++)
        {
            if (!vis[i]&&roa[s][i])
            {
                vis[i]=1;
                dfs(roa[s][i]);
                output[ans++] = i;
            }
        }
    }
    
    int main()
    {
        int a, b;
        while (scanf("%d%d", &a, &b))                //大循环代表每一组数据的开始
        {
            int start = min(a, b);
            ans = 0; mem(output);
            int c; maxn = 0;
            if (a == 0 && b == 0)break;
            mem(vis); mem(roa); mem(ind);
            while (a != 0 && b != 0)               
            {
                scanf("%d", &c);
                roa[a][c] = b;
                roa[b][c] = a;
                ind[a] = !ind[a];                  //只需判断该点的奇偶就可以了
                ind[b] = !ind[b];
                maxn = max(maxn, c);
                scanf("%d%d", &a, &b);
            }
            int i;
            for (i = 1; i < 50; i++)
            {
                if (ind[i])break;
            }
            if (i < 50)
            {
                printf("Round trip does not exist.
    ");
                continue;
            }
            dfs(start);
            for (i = ans-1; i >0; i--)printf("%d ", output[i]);     
            printf("%d
    ", output[0]);                                  
        }
        return 0;
    }

    2018-04-03


    作者:is_ok
    出处:http://www.cnblogs.com/00isok/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    【搜索结果】高亮显示
    【搜索面板】排序单选
    【搜索面板】价格信息单选
    根据接口返回的数据重组数组
    Array.from
    获取指定字符串第n次出现的位置索引
    Object
    验证码倒计时
    iview Form表单正则验证
    网络图片转base64格式
  • 原文地址:https://www.cnblogs.com/00isok/p/8710299.html
Copyright © 2011-2022 走看看