- *********************************
- * 日期:2013-3-23
- * 作者:SJF0115
- * 题号: 题目1531: One Day Tour In ZJU
- * 来源:http://acmclub.com/problem.php?id=1531
- * 结果:AC
- * 来源:2013年浙江大学复试机试模拟题
- * 总结:
- **********************************/
- #include<stdio.h>
- #include<string.h>
- int n,m,ok;
- int vis[22],Map[22][22];
- //搜索,已经访问count个地方现在处于location点
- void DFS(int location,int count)
- {
- int i;
- //已经全部访问完
- if(count == n){
- //到达目的地n
- if(location == n){
- ok = 1;
- }
- return;
- }
- //没有访问完,访问下一处
- for(i = 1;i <= n;i++){
- //i点没访问过且能访问则去i点
- if(Map[location][i] == 1&& vis[i] == 0){
- //标记i已经访问过
- vis[i]=1;
- //递归下一处
- DFS(i,count+1);
- if(ok == 1){
- return;
- }
- //取消标记
- vis[i] = 0;
- }
- }
- }
- //初始化
- void Init()
- {
- int i,j,start,end;
- //初始化地图
- for(i = 1;i <= n;i++){
- for(j = 1;j <= n;j++){
- Map[i][j]=0;
- }
- }
- //添加路况
- for(i = 0;i < m;i++){
- scanf("%d %d",&start,&end);
- //end和start之间联通
- Map[start][end]=1;
- Map[end][start]=1;
- }
- memset(vis,0,sizeof(vis));
- ok = 0;
- //1为出发点
- vis[1]=1;
- }
- int main()
- {
- while(scanf("%d %d",&n,&m)!=EOF){
- Init();
- DFS(1,1);
- printf("%d\n",ok);
- }
- return 0;
- }
来源:2013年浙江大学复试机试模拟题
最新推荐文章于 2022-10-01 11:23:51 发布