
本文共 2850 字,大约阅读时间需要 9 分钟。
������������������������������������������������������������������������������������������������������������������������������������������������
���������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������
#define MAX 26const int maxnode = 4000 * 100 + 100; // ������������������������const int sigma_size = 26; // ������������������������������int ch[maxnode][sigma_size]; // ch[i][j]���������i���������������j������������kint val[maxnode]; // val[i]���������i������������������int sz; // ������������������sz���������void clear() { sz = 1; memset(ch[0], 0, sizeof(ch[0]));}int idx(char c) { return c - 'a';}void insert(char* s) { int u = 0, n = strlen(s); for (int i = 0; i < n; i++) { int id = idx(s[i]); if (ch[u][id] == 0) { ch[u][id] = sz++; memset(ch[sz], 0, sizeof(ch[sz])); val[sz] = n - i; } else { u = ch[u][id]; } } val[u] = n;}bool search(char* s) { int u = 0, n = strlen(s); for (int i = 0; i < n; i++) { int id = idx(s[i]); if (ch[u][id] == 0) { return false; } u = ch[u][id]; } return true;}
������������
������������
������������������������������������������������������������������������������������������������������������������������������
������������
���������������������������������������DAG������������������������������������������������������u���v���������u������������������������v���������
������������������
������������
���������������������������������������������������dependency������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
