zoukankan      html  css  js  c++  java
  • DFS || HDU 2181

    题意:一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 

    前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m<=20,m>=1.m=0退出

    输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条路线.然后个一个: 后列出经过的城市

    dfsdfsdfsdfsdfsdfs…………

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    using namespace std;
    #define SZ 2010
    bool vis[22];
    int path[22];
    struct node
    {
        int a, b, c;
    }city[22];
    int ct[22][3];
    int cnt = 0;
    int m;
    void dfs(int x, int k)
    {
        path[k] = x;
        for(int i = 1; i <= 3; i++)
        {
            int t = ct[x][i];
            if(t == m && k == 19)
            {
                cnt++;
                printf("%d: ", cnt);
                for(int i = 0; i < 20; i++) printf(" %d", path[i]);
                printf(" %d
    ", m);
                return;
            }
            if(t == m) continue;
            if(!vis[t])
            {
                vis[t] = 1;
                dfs(t, k+1);
                vis[t] = 0;
            }
        }
    }
    int main()
    {
        for(int i = 1; i <= 20; i++)
            for(int j = 1; j <= 3; j++)
                scanf("%d", &ct[i][j]);
        for(int i = 1; i <= 20; i++) sort(ct[i]+1, ct[i]+4);
        while(true)
        {
            scanf("%d", &m);
            if(m == 0) break;
            cnt = 0;
            memset(vis, 0, sizeof(vis));
            vis[m] = 1;
            dfs(m, 0);
        }
        return 0;
    }
  • 相关阅读:
    Hive-基本操作
    Hive-安装
    Hive-概述
    游荡二十几天的感想
    js html css
    C#笔试总结
    ubuntu16.04 下 C# mono开发环境搭建
    scoket、TCP、UDP、WebService选型
    虚拟机安装Windows系统,再安装orcale
    Rosetta Stone 不在C盘安装步骤
  • 原文地址:https://www.cnblogs.com/pinkglightning/p/9551440.html
Copyright © 2011-2022 走看看