#include<bits/stdc++.h>
using namespace std;
const int NUMBEROFNODE = 2e6 + 5;
struct trie{
struct node{
int child[26];
int exist , cnt;
} nodes[NUMBEROFNODE];
int cur;
trie() : cur(0) {
memset(nodes[0].child , -1 , sizeof(nodes[0].child));
nodes[0].exist = nodes[0].cnt = 0;
};
int new_node(){
cur++;
memset(nodes[cur].child , -1 , sizeof(nodes[cur].child));
nodes[cur].exist = nodes[cur].cnt = 0;
return cur;
}
void add_string(string s){
int pos = 0;
for(auto f : s){
int t = f - 'a';
if(nodes[pos].child[t] == -1) nodes[pos].child[t] = new_node();
pos = nodes[pos].child[t];
nodes[pos].cnt++;
}
nodes[pos].exist++;
}
} Trie;
void solve(void){
string t; cin >> t;
sort(t.begin() , t.end());
Trie.add_string(t);
}
int main(void){
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
int testCase; cin >> testCase;
while(testCase--){
solve();
}
cout << Trie.cur + 1;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |