输出一张图上的所有欧拉路。。。直接DFS就可以了。图是固定的。
Time Limit: 3000MS | Memory Limit: Unknown | 64bit IO Format: %lld & %llu |
Description

The House Of Santa Claus
The House Of Santa Claus |
In your childhood you most likely had to solve the riddle of the house of Santa Claus. Do you remember that the importance was on drawing the house in a stretch without lifting the pencil and not drawing a line twice? As a reminder it has to look like shown in Figure 1.
Figure: The House of Santa Claus
Well, a couple of years later, like now, you have to ``draw'' the house again but on the computer. As one possibility is not enough, we require all the possibilities when starting in the lower left corner. Follow the example in Figure 2 while defining your stretch.
Figure: This Sequence would give the Outputline 153125432
All the possibilities have to be listed in the outputfile by increasing order, meaning that 1234... is listed before 1235... .
Output
So, an outputfile could look like this:
12435123 13245123 ... 15123421
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int map[10][10];
int stack[200];
void dfs(int x,int cnt,int top)
{
stack[top++]=x;
if(cnt==8)
{
for(int i=0;i<top;i++)
printf("%d",stack[i]);
printf("\n");
return ;
}
for(int i=1;i<=5;i++)
{
if(map[x][i])
{
map[x][i]=map[i][x]=0;
dfs(i,cnt+1,top);
map[x][i]=map[i][x]=1;
}
}
}
void init()
{
memset(map,0,sizeof(map));
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
if(i!=j) map[i][j]=1;
map[1][4]=map[4][1]=0;
map[2][4]=map[4][2]=0;
}
int main()
{
init();
dfs(1,0,0);
}