提交时间:2024-01-21 19:01:36
运行 ID: 121443
#include<bits/stdc++.h> #define int long long using namespace std; namespace Trie{ int Trieidx = 0,Triet[300005][27],Triecnt[300005]; void TrieInit(){ for (int i = 0;i <= Trieidx + 3;i++){ for (int j = 0;j <= 27;j++){ Triet[i][j] = 0; } } for (int i = 0;i <= Trieidx + 3;i++){ Triecnt[i] = 0; } Trieidx = 0; } int TrieGetnum(char x){ return x - 'A' + 1; } void TrieInsert(string s){ int a = 0,slen = s.size(); for (int i = 0;i < slen;i++){ int b = TrieGetnum(s[i]); if (Triet[a][b] == 0){ Trieidx++; Triet[a][b] = Trieidx; } a = Triet[a][b]; Triecnt[a]++; } } int TrieQuery(string s){ int a = 0,slen = s.size(); for (int i = 0;i < slen;i++){ int b = TrieGetnum(s[i]); if (Triet[a][b] == 0){ return 0; } a = Triet[a][b]; } return Triecnt[a]; } } using namespace Trie; void slove(){ TrieInit(); //int n,q; //cin>>n>>q; string s; while (cin>>s){ TrieInsert(s); } cout<<Trieidx + 1; return ; } signed main(){ int t = 1; while (t--){ slove(); } return 0; }