本文主要是介绍http://acm.hdu.edu.cn/showproblem.php?pid=4337dfs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一道深搜题,给你一些朋友的关系,让你找到这样的一个排列,相邻的人是朋友,,
AC代码:
#include<cstdio>
#include<string.h>
#include<string>
#define N 180
using namespace std;
bool map[N][N],vis[N];
int path[N];
bool flag;
int n,m,res;
void dfs(int x)
{if(flag) return;if(res==n){printf("1");for(int i=1;i<n;++i)printf(" %d",path[i]);printf("\n");flag=true;return;}for(int i=2;i<=n;++i)if(!vis[i]&&map[x][i]){if(res==n-1&&!map[i][1]) continue;path[res]=i;vis[i]=true;++res;dfs(i);vis[i]=false;--res;}
}
int main()
{while(~scanf("%d%d",&n,&m)){memset(map,false,sizeof(map));memset(vis,false,sizeof(vis));for(int i=0;i!=m;++i){int a,b;scanf("%d%d",&a,&b);map[a][b]=map[b][a]=1;}res=1,flag=false;vis[1]=true;dfs(1);if(!flag) printf("no solution\n");}return 0;
}
这篇关于http://acm.hdu.edu.cn/showproblem.php?pid=4337dfs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!