#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 输出:_________

填写答案