M - 小希的迷宫

跟N题是一样的,不过会爆栈,有两种解决办法,第一种加
#pragma comment(linker, "/STACK:102400000,102400000")
这一行代码,不过只能用c++提交,第二种自己写个栈
/////////////////////////////////////
#pragma comment(linker, "/STACK:102400000,102400000")
#include
#include
#include
#include
#include< string.h>
#include
using  namespace std;

const  int maxn =  100005;

int f[maxn], use[maxn];

void Init()
{
     for( int i= 0; i        f[i] = i, use[i] =  0;
}
int Find( int x)
{
     if(f[x] != x)
        f[x] = Find(f[x]);
     return f[x];
}

int main()
{
     int u, v, ok= 1;

    Init();
     while(scanf( " %d%d ", &u, &v), u!= - 1 || v!=- 1)
    {
         if(u+v ==  0)
        {
             int sum =  0;

             for( int i= 0; i            {
                 if(use[i] ==  1 && f[i] == i)
                    sum++;
            }

             if(ok && sum <  2)printf( " Yes\n ");
             else printf( " No\n ");

            ok =  1;
            Init();
        }
         else
        {
            use[u] = use[v] =  1;
            
            u = Find(u);
            v = Find(v);
            
             if(u != v)
                f[u] = v;
             else ok =  0;
        }
    }

     return  0;

} 

转载于:https://www.cnblogs.com/liuxin13/p/4670133.html

你可能感兴趣的:(M - 小希的迷宫)