您的位置:首页 > 其它

P1209 几何图形还原

2017-06-03 18:15 218 查看
P1209 几何图形还原

2017年6月3日

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;

int N;
int a, b;
bool edges[60][60];
int Recalls[60 * 60 + 10];//记录
int tails = 0;//Recalls
bool Jus[60];
bool flag = false;

void Putin()
{
cin >> N;
memset(edges, false, sizeof(edges));
memset(Jus, false, sizeof(Jus));
while(cin >> a >> b){
edges[a][b] = true;
edges[b][a] = true;
}
}

inline bool Checke()
{
for(int i = 1; i <= N; i++)
if(Jus[i] == false)    return false;
return true;
}

void Dfs(int s)
{
if(s == 1 && Checke() == true){
flag = true;
return;
}
for(int i = 1; i <= N; i++)
if(edges[i][s] == true && Jus[i] == false){
edges[i][s] = false;
edges[s][i] = false;
Jus[i] = true;
Dfs(i);
if(flag == true && i != 1){
Recalls[++tails] = i;
return;
}
edges[i][s] = true;
edges[s][i] = true;
Jus[i] = false;
}
}

int main()
{
Putin();
Dfs(1);
cout << 1 << ' ';
for(int i = tails; i >= 1; i--)
cout << Recalls[i] << ' ';
cout << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐