Beispiel #1
0
bool sear(posi orig,posi mid, posi dest,int bottom)
{
    if(bottom==0)
        return true;
    if(pans[bottom]==mid)
        return false;
    else
    {
        if(pans[bottom]==orig)
            return sear(orig,dest,mid,bottom-1);
        else
            return sear(mid,orig,dest,bottom-1);
    }
}
int main()
{
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
#endif
    char line[100];
    char tmp[20];
    cnt=1;
    init();

    while(gets(line) && strlen(line))
    {
        sscanf(line,"%s %s",str[cnt],tmp);
        insert(tmp,cnt);
        cnt++;
    }
    while(gets(line))
    {
        int p=sear(line);
        if(p!=0)
            printf("%s\n",str[p]);
        else
            printf("eh\n");
    }
    return 0;
}
int main()
{
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
#endif
    char a[MAXM],b[MAXM];
    int cnt=0;
    init();
    memset(p,-1,sizeof(p));
    memset(d,0,sizeof(d));
    while(scanf("%s %s",a,b)==2)
    {
        int pa=sear(a),pb=sear(b);
        if(pa==-1)
        {
            insert(a,cnt);
            pa=cnt++;
        }
        if(pb==-1)
        {
            insert(b,cnt);
            pb=cnt++;
        }
        unit(pa,pb);
        d[pa]++;
        d[pb]++;
    }
    bool flag=true;
    int p0=find(0);
    for(int i=1; i<cnt && flag; i++)
    {
        if(p0!=find(i)) flag=false;
    }
    int cnte=0;
    for(int i=0; i<cnt && flag; i++)
    {
        if(d[i]%2==1)   cnte++;
    }
    if(flag && (cnte==0 || cnte==2))
        printf("Possible\n");
    else
        printf("Impossible\n");
    return 0;
}
int main()
{
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
#endif
    int t,n;
    scanf("%d",&t);
    while(t--)
    {
        init();
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            scanf("%s",str[i]);
            insert(str[i],i+1);
        }
        bool flag=false;
        for(int i=0;i<n && !flag;i++)
        {
            int nLen=strlen(str[i]);
            for(int j=1;j<nLen;j++)
            {
                char tmp[20];
                strcpy(tmp,str[i]);
                tmp[j]=0;
                if(sear(tmp)!=0)
                {
                    flag=true;
                    break;
                }
            }
        }
        if(!flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}
Beispiel #5
0
int main()
{
    int t;
    while(scanf("%d",&t)!=EOF)
    {
        int n,a,tem;
        for(int j=0; j<t; j++)
        {
            scanf("%d",&n);
            scanf("%d",&a);
            for(int i=0; i<a; i++)
            {
                scanf("%d",&tem);
                pans[tem]=A;
            }
            scanf("%d",&a);
            for(int i=0; i<a; i++)
            {
                scanf("%d",&tem);
                pans[tem]=B;
            }
            scanf("%d",&a);
            for(int i=0; i<a; i++)
            {
                scanf("%d",&tem);
                pans[tem]=C;
            }
            if(sear(A,B,C,n))
            {
                printf("true\n");
            }
            else
                printf("false\n");
        }
    }
}