zoukankan      html  css  js  c++  java
  • hdu 1272 小希的迷宫 (深搜)

    #include<stdio.h>
    #include<string.h>
    int a[100000][2],vis[100000],i,count;
    int f(int p,int k)
    {
        int j,t;
        for(j=k+1;j-k<=i;j++)
        {
            if(j>i) t=j-i-1;
            else t=j;
            if(p==a[t][0] && !vis[a[t][1]]) 
            {
                vis[a[t][1]]=1;count++;
                if(f(a[t][1],t)==0) return 0;
            }
            else if(p==a[t][1] && !vis[a[t][0]]) 
            {
                vis[a[t][0]]=1;count++;
                if(f(a[t][0],t)==0) return 0;
            }
            else if((p==a[t][0] && vis[a[t][1]]) || (p==a[t][1] && vis[a[t][0]])) return 0;
        }
        return 1;
    }
    int main()
    {
        int k,z;
        while(scanf("%d%d",&a[0][0],&a[0][1])==2 && (a[0][0]!=-1 || a[0][1]!=-1))
        {
            if(a[0][0]==0 && a[0][1]==0) 
            {
                printf("Yes\n");continue;
            }
            z=0;
            if(a[0][0]==a[0][1]) z=1;
            for(i=1;;i++)
            {
                scanf("%d%d",&a[i][0],&a[i][1]);
                if(a[i][0]==0 && a[i][1]==0) break;
                if(a[i][0]==a[i][1]) z=1;
            }
            if(z) 
            {
                printf("No\n");continue;
            }
            i--;
            if(i>=99999) 
            {
                printf("No\n");continue;
            }
            memset(vis,0,sizeof(vis));
            vis[a[0][0]]=1;vis[a[0][1]]=1;
            k=0;count=0;
            if(f(a[0][0],k) && f(a[0][1],k) && count==i) printf("Yes\n");
            else printf("No\n");
        }
        return 0;
    }

  • 相关阅读:
    黑色边影,
    拉伸的代码,
    一定是selection的原因啊,要不然呢,
    status bar的差别,
    黄色,
    域名错了,
    node=day4
    PS切片
    移动端插件IScroll.js
    移动web资源概论
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218188.html
Copyright © 2011-2022 走看看