zoukankan      html  css  js  c++  java
  • hdu 2181 水搜索

    哈密顿绕行世界问题

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 1039    Accepted Submission(s): 643


    Problem Description
    一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 
     
    Input
    前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m<=20,m>=1.m=0退出.
     
    Output
    输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条路线.然后个一个: 后列出经过的城市.参看Sample output
     

    http://acm.hdu.edu.cn/showproblem.php?pid=2181

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<algorithm>
     6 using namespace std;
     7 
     8 struct node
     9 {
    10     int a[3];
    11 }f[22];
    12 bool hash[22];
    13 int  stack[22];
    14 int s,t;
    15 
    16 void dfs(int m,int cur)
    17 {
    18     int i,k;
    19     if(cur==21 && m==s)
    20     {
    21         for(i=0;i<21;i++)
    22         {
    23             if(i!=0)printf(" ");
    24             else printf("%d:  ",++t);
    25             printf("%d",stack[i]);
    26         }
    27         printf("
    ");
    28     }
    29 
    30     for(i=0;i<3;i++)
    31     {
    32         k=f[m].a[i];
    33         if(hash[k]==false)
    34         {
    35             hash[k]=true;
    36             stack[cur]=k;
    37             dfs(k,cur+1);
    38             hash[k]=false;
    39         }
    40         else if(k==s && cur==20)
    41         {
    42             stack[cur]=k;
    43             dfs(k,cur+1);
    44         }
    45     }
    46 }
    47 int main()
    48 {
    49     int i;
    50     while(scanf("%d",&f[1].a[0])>0)
    51     {
    52         if(f[1].a[0]==0)break;
    53         scanf("%d%d",&f[1].a[1],&f[1].a[2]);
    54         for(i=2;i<=20;i++)
    55             scanf("%d%d%d",&f[i].a[0],&f[i].a[1],&f[i].a[2]);
    56 
    57         for(i=1;i<=20;i++)
    58             sort(f[i].a,f[i].a+3);    
    59         scanf("%d",&s);
    60         memset(hash,false,sizeof(hash));
    61         hash[s]=true;
    62         stack[0]=s;
    63         t=0;
    64         dfs(s,1);
    65     }
    66     return 0;
    67 }
     
  • 相关阅读:
    ガリレオの苦悩 操縦る 3
    ガリレオの苦悩 操縦る 2
    ガリレオの苦悩 操縦る 1
    ガリレオの苦悩 落下る 2
    ガリレオの苦労 落下る 1
    magento搬家步骤和可能遇到的问题
    Magento 自定义URL 地址重写 分类分级显示
    234的笔记
    Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名
    怎么用jquery判断浏览器类型和版本号?
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3662641.html
Copyright © 2011-2022 走看看