#include<iostream> #include

#include<iostream>
#include<cstring>
using namespace std;
const int SIZE=100;
int n,m,r[SIZE];
bool map[SIZE][SIZE],found;
bool successful()
{
 int i;
 for(i=1;i<=n;i++)
 if(!map[r[i]][r[i%n+1]])
 return false;
 return true;
}
void swap(int *a,int *b)
{
 int t;
 t=*a;
 *a=*b;
 *b=t;
}
void perm(int left,int right)
{
 int i;
 if(found)
 return ;
 if(left>right)
 { 
 if(successful())
 {
 for(i=1;i<=n;i++)
 cout<<r[i]<<' ';
 found=true;
 }
 return ; 
 }
 for(i=left;i<=right;i++)
 {
 swap(r+left,r+i);
 perm(left+1,right);
 swap(r+left,r+i);
 }
}
int main()
{
 int x,y,i;
 cin>>n>>m;
 memset(map,false,sizeof(map));
 for(i=1;i<=m;i++)
 {
 cin>>x>>y;
 map[x][y]=true;
 map[y][x]=true;
 }
 for(i=1;i<=n;i++)
 r[i]=i;
 found=false;
 perm(1,n);
 if(!found)
 cout<<"No solution!"<<endl; 
 return 0;
}

输入: 9 12 

1 2 

2 3 

3 4 

4 5

5 6

6 1 

1 7

2 7

3 8 

4 8 

5 9 

6 9 

输出: _________

答案
第1空:1 6 9 5 4 8 3 2 7

题目信息

题号:6557
题型:填空题
难度:普通