• POJ 1041(欧拉路)


    准确说应该是无向图的欧拉回路

    应该满足的条件是每个点的度是偶数

    这个提要求输出字典序最小的方案,为什么SPJ呢??

    因为题目允许我们从任意一个点开始走,我们只要输出从任意一点出发的欧拉回路方案即可~

    是一道欧拉回路模板题~

    View Code
     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <iostream>
     5 #define M 20000
     6 #define N 100
     7 using namespace std;
     8 int map[N][M],stack[M],p,d[N],maxn,maxm;
     9 bool vis[M];
    10 void dfs(int u)
    11 {
    12     for(int i=1;i<=maxm;i++)
    13         if(map[u][i]&&!vis[i])
    14         {
    15             vis[i]=true;
    16             dfs(map[u][i]);
    17             stack[++p]=i;
    18         }
    19 }
    20 void prt()
    21 {
    22     while(p)
    23     {
    24         printf("%d ",stack[p]);
    25         p--;
    26     }
    27     printf("\n");
    28 }
    29 void go()
    30 {
    31     for(int i=1;i<=maxn;i++) 
    32         if(d[i]&1)
    33         {
    34             printf("Round trip does not exist.\n");
    35             return;
    36         }
    37     memset(vis,0,sizeof vis);
    38     p=0;
    39     dfs(maxn);
    40     prt();
    41 }
    42 int main()
    43 {
    44     int x,y,z;
    45     while(scanf("%d%d",&x,&y),x||y)
    46     {
    47         memset(map,0,sizeof map);
    48         memset(d,0,sizeof d);
    49         maxn=0; maxm=1; 
    50         scanf("%d",&z);
    51         map[x][z]=y; map[y][z]=x;
    52         d[x]++; d[y]++;
    53         maxn=max(maxn,max(x,y));
    54         maxm++;
    55         while(scanf("%d%d",&x,&y),x||y)
    56         {
    57             scanf("%d",&z);
    58             map[x][z]=y; map[y][z]=x;
    59             d[x]++; d[y]++;
    60             maxn=max(maxn,max(x,y));
    61             maxm++;
    62         }
    63         go();
    64     }
    65     system("pause");
    66     return 0;
    67 }
    没有人能阻止我前进的步伐,除了我自己!
  • 相关阅读:
    异步、作用域、闭包--setTimeout在for循环中的思考
    C++中*和&的定义和使用
    利用border设置transparent绘制图形
    暑假周记四
    暑假周记三
    win10系统下安装Linux虚拟机以及在虚拟机上安装Ubuntu
    暑假周记二
    暑假周记一
    《浪潮之巅》上——阅读笔记06
    《浪潮之巅》上——阅读笔记05
  • 原文地址:https://www.cnblogs.com/proverbs/p/2662500.html
Copyright © 2020-2023  润新知