UVA11362 Phone List

  其实我并没有A掉这道题,因为暂时没有UVA账号qwq……

  请原谅济南的电脑配置有限,回去再注册 ~

  不过代码应该是灭有问题哒!

  好嘞,不解释,直接代码(没啥子可以解释的嘞QAQ):

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define maxn 2000
int ch[maxn][maxn],tot=0;;
char s[maxn];
bool vis[maxn],end[maxn],flag;
void build_tree()
{
    int len=strlen(s+1);
    int now=1;
    for(int i=1; i<=len; i++)
    {
        int y=s[i]-'0';
        if(!ch[now][y])
            ch[now][y]=++tot;
        now=ch[now][y];
        if(vis[now]==1&&i==len)
        {
            flag=1;
            return ;
        }
        vis[now]=1;
        if(end[now])
        {
            flag=1;
            return ;
        }
    }
    end[now]=1;
}
int main()
{
    int num,n;
    scanf("%d",&num);
    while(num--)
    {
        memset(vis,0,sizeof(vis));
        memset(ch,0,sizeof(ch));
        memset(end,0,sizeof(end));
        scanf("%d",&n);
        flag=0,tot=0;
        for(int i=1; i<=n; i++)
        {
            scanf("%s",s+1);
            if(flag) continue;
            build_tree();
        }
        if(!flag) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

  如果你问我今个儿咋介么说话,我只能说我在学习方言!

猜你喜欢

转载自www.cnblogs.com/popo-black-cat/p/10346833.html