其实我并没有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 "); else printf("NO "); } return 0; }
如果你问我今个儿咋介么说话,我只能说我在学习方言!