Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define MAX 100005
- int trie[MAX][10];
- int sz = 0;
- int end_here[MAX];
- void add(string s)
- {
- int v = 0;
- for(int i=0; i<s.length(); i++){
- int x = s[i] - '0';
- if(trie[v][x] == -1) trie[v][x] = ++sz;
- v = trie[v][x];
- }
- end_here[v]++;
- }
- bool search(string s)
- {
- int v = 0;
- for(int i=0; i<s.length(); i++){
- int x = s[i] - '0';
- if(trie[v][x] == -1) return false;
- v = trie[v][x];
- if(end_here[v]) return true;
- }
- return true;
- }
- int main()
- {
- //freopen("in.txt", "r", stdin);
- //freopen("out.txt", "w", stdout);
- int cases;
- scanf("%d", &cases);
- int caseno = 0;
- while(cases--){
- memset(trie, -1, sizeof trie);
- memset(end_here, 0, sizeof end_here);
- sz = 0;
- int n;
- scanf("%d", &n);
- bool flag = true;
- for(int i=0; i<n; i++){
- string str;
- cin >> str;
- if(search(str)){
- flag = false;
- }
- add(str);
- }
- if(flag) printf("Case %d: YES\n", ++caseno);
- else printf("Case %d: NO\n", ++caseno);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment