zoukankan      html  css  js  c++  java
  • poj3194

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define N 1005
    int map[N][N];
    int vis[N][N];
    int n,ans,now_k;
    const int dx[]={0,0,-1,1};
    const int dy[]={-1,1,0,0};
    
    void dfs(int sx,int sy){
    	int i,tx,ty;
    	if(ans==n){
    		return ;
    	}
    	for(i=0;i<4;i++){
    		tx=sx+dx[i];
    		ty=sy+dy[i];
    		if(tx<1||tx>n||ty<1||ty>n||vis[tx][ty]==1||map[tx][ty]!=now_k)
    			continue;
    		vis[tx][ty]=1;
    		ans++;
    		dfs(tx,ty);
    	}
    	return ;
    }
    
    int main(){
    	int a,b,i,j,p;
    	int flag;
    	while(scanf("%d",&n),n){
    		for(i=1;i<=n;i++)
    			for(j=1;j<=n;j++)
    				map[i][j]=n;
    		
    		for(i=1;i<n;i++){
    			for(j=1;j<=n;j++){
    				scanf("%d%d",&a,&b);
    				map[a][b]=i;
    			}
    		}//input
    
    		flag=1;//yes
    		int sx,sy;
    		memset(vis,0,sizeof(vis));
    		for(now_k=1;now_k<=n && flag==1;now_k++){
    		for(i=1;i<=n && flag==1;i++)
    			for(j=1;j<=n && flag==1;j++){
    				if(map[i][j]==now_k && vis[i][j]==0){
    					sx=i;
    					sy=j;
    					vis[i][j]=1;
    					ans=1;
    					dfs(sx,sy);//
    					if(ans==n)//必须搜索到n个k
    						flag=1;
    					else
    						flag=0;//no
    				}
    			}
    		}
    		if(flag==1)
    			printf("good\n");
    		else
    			printf("wrong\n");
    	}
    	return 0;
    }
    

      哇哈哈。。。。。。。。

    keep moving...
  • 相关阅读:
    需要union
    with语法,需要递归的面试题目
    聚合主分类,子查询获得子分类
    泛型
    RepeaterInMVC
    需要自己创建集合的题目
    Ollydbg入门
    svn服务器架设
    http与svn架设服务器
    svn错误信息一览表
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2623286.html
Copyright © 2011-2022 走看看