UVA 1449

UVA 1449

因为有重复,结点用vector保存单词编号。

#include<iostream>
#include<vector>
#include<queue>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;

const int MAX_NODE=15000;
const int SIGMA_SIZE=26;
struct ACAutomation
{
    int sz;
    int ch[MAX_NODE][SIGMA_SIZE];
    int fail[MAX_NODE];
    vector<int> val[MAX_NODE];
    void init()
    {
        sz=1;
        memset(ch[0],0,sizeof(ch[0]));
        val[0].clear();
    }
    int idx(char c){return c-'a';}
    void insert(const char *s,int v)
    {
        int u=0;
        for(int i=0;s[i]!='