Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct bor{
- int next[26];//next[i] - в какую вершину мы попадем, если перейдем из нашей вершины по символу i. Тут 26 элементов - для латинского алфавита
- } t[N]; // сам бор(массив структур). Вообще в этой задаче можно и просто одномерным массивом, но обычно в каждой вершине бора хранится что-то еще кроме переходов.
- int last=0; // номер последнего элемента в боре
- void insert(string & s){ // вставка строки в бор
- int cur=0; // стартуем из корня, он в нулевой вершине
- int m=s.length();
- for (int i=0;i<m;i++){
- if (!t[cur].next[s[i]-'a']) t[cur].next[s[i]-'a']=++last; //если из нашей вершины нет перехода по нужному символу, просто добавим новую вершину
- cur=t[cur].next[s[i]-'a']; //переходим по текущему символу и обрабатываем следующий
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment