题库 信息学奥赛题库 题目列表 #include<iostream>#include<cstring>usi...
填空题

#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

输出:_________

题目信息
2010年 初赛
-
正确率
0
评论
49
点击