空间什么的应该都是对的,但是不知道哪里错了
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 4e5 + 5;
int t, n, cnt;
int trie[maxn], nxt[maxn][10];
bool flag;
char s[11];
bool add(char* p) {
int len = strlen(p+1), now = 0;
bool x = false;
for(int i = 1; i <= len; i++) {
if(!nxt[now][p[i]-'0']) {
x = true;
nxt[now][p[i]-'0'] = ++cnt;
}
now = nxt[now][p[i]-'0'];
if(trie[now]) return false;
}
trie[now] = 1;
return x;
}
int main() {
scanf("%d", &t);
while(t--) {
memset(trie, 0, sizeof(trie));
memset(nxt, 0, sizeof(nxt));
cnt = 0, flag = true;
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%s", s+1);
if(!flag) continue;
if(!add(s)) flag = false;
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}