Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define filer() freopen("in.txt","r",stdin)
- #define filew() freopen("out.txt","w",stdout)
- #include<iostream>
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- #include<algorithm>
- #include<queue>
- #include<stack>
- #include<vector>
- #include <map>
- #define INF 1<<29
- #define SET(a, x) memset((a), (x), sizeof(a))
- #define i64 long long
- #define pb push_back
- #define EPS 1e-9
- using namespace std;
- struct node
- {
- bool endmark;
- node *next[10+1];
- node()
- {
- endmark=false;
- for(int i=0;i<10;i++) next[i]=NULL;
- }
- }*root;
- void insert(char *str,int len)
- {
- node *curr=root;
- for(int i=0;i<len;i++)
- {
- int id=str[i]-'0';
- if(curr->next[id]==NULL)
- curr->next[id]=new node();
- curr=curr->next[id];
- }
- curr->endmark=1;
- }
- bool search(char *str,int len)
- {
- node *curr=root;
- for(int i=0;i<len;i++)
- {
- int id=str[i]-'0';
- //if(curr->next[id]==NULL) return false;
- curr=curr->next[id];
- }
- for(int id=0;id<10;id++)
- {
- if(curr->next[id]!=NULL)return false;
- }
- return true;
- }
- void del(node *cur)
- {
- for(int i=0;i<10;i++)
- if(cur->next[i])
- del(cur->next[i]) ;
- delete(cur) ;
- }
- char S[10009][12];
- int main()
- {
- //filer();
- int i,j,k ,T,cas=0;
- //scanf("%d%d",,&N,&T);
- scanf("%d",&T);
- int n;
- while(T--)
- {
- root=new node();
- scanf("%d",&n);
- for(i=0;i<n;i++)
- {
- scanf("%s",S[i]);
- insert(S[i],strlen(S[i]));
- }
- bool t=1;
- for(i=0;i<n;i++)
- {
- t=search(S[i],strlen(S[i]));
- if(!t)break;
- }
- if(!t)printf("Case %d: NO\n",++cas);
- else printf("Case %d: YES\n",++cas);
- del(root);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement