ription
在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa, bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫'aaaaa'的時候可以只叫'aaa',因為沒有第二個人名字的前三個字母是'aaa'。不過你不能叫'a',因為有兩個人的名字都以'a'開頭。村里的人都很聰明,他們總是用最短的稱呼叫人。輸入保證村里不會有乙個人的名字是另外乙個人名字的字首(作為推論,任意兩個人的名字都不會相同)。
如果村里的某個人要叫所有人的名字(包括他自己),他一共會說多少個字母?
input
輸入第一行為資料組數t (t<=10)。每組資料第一行為乙個整數n(1<=n<=1000),即村里的人數。以下n行每行為乙個人的名字(僅有小寫字母組成)。輸入保證乙個村里所有人名字的長度之和不超過1,000,000。
output
對於每組資料,輸出所有人名字的字母總數。
13aaaaa
bbbabababa
sample output
5
#include#include#includeusing namespace std;
const int maxn=1000005;
int tree[maxn][26];
int num[maxn];//記錄每個節點到達的次數
char s[maxn];
int m=0;
int ans;
void build(int rt,char s)
else
rt=tree[rt][s[i]-'a'];
num[rt]++;//記錄節點到達次數
}}/*void build(int rt,char s)
}*/void dfs(int rt,int depth)
for(int i=0;i<26;i++)
}int main()
ans=0;
dfs(0,0);
printf("%d\n",ans);
}return 0;
}
最短的名字
在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人的名字都以 a 開頭。村...
最短的名字
description 在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人...
最短的名字
在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人的名字都以 a 開頭。村...