HDU 1307 搜索

来源:互联网 发布:摆摊打印照片软件 编辑:程序博客网 时间:2024/06/03 12:50

把坐标转换为数字存储然后DFS

#include "stdio.h"#include "string.h"int flag,sum,e,s;int a[10010],b[10010];int mark[10010];void dfs(int w){int i;if (w==e) { flag=1; return ;}for (i=1;i<=sum;i++)if (mark[i]==0 && (a[i]==w || b[i]==w)){mark[i]=1;if (a[i]==w) dfs(b[i]);else dfs(a[i]);}}int main(){int Case,i,j,n,x;Case=0;while (scanf("%d",&n)!=EOF){if (n==0) break;Case++;s=e=0;for (i=1;i<=n;i++){scanf("%d",&x);s=s*10+x;}for (i=1;i<=n;i++){scanf("%d",&x);e=e*10+x;}sum=0;memset(a,0,sizeof(a));memset(b,0,sizeof(b));while (scanf("%d",&x)!=EOF){if (x==-1) break;sum++;a[sum]=x;for (i=1;i<n;i++){scanf("%d",&x);a[sum]=a[sum]*10+x;}for (i=1;i<=n;i++){scanf("%d",&x);b[sum]=b[sum]*10+x;}}flag=0;memset(mark,0,sizeof(mark));dfs(s);printf("Maze #%d ",Case);if (flag==0)printf("cannot be travelled\n");else printf("can be travelled\n");}return 0;}


0 0
原创粉丝点击