#1618 : 单词接龙

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

给定一个单词字典和一个起始字母。小Hi需要从起始字母开始,每次再加上一个字母,生成长度为2、3、4……的单词;并且保证每个生成的单词都在字典中。

求能生成的最长单词的长度。

例如字典是{h, ho, hi, iho, hiho, hihocoder}, 起始字母是h,那么可以通过h-ho-iho-hiho得到长度为4的单词。

输入

第一行包含一个整数N和一个小写字母c。

第二行包含N个空格分开的由小写字母组成的单词单词。保证起始字母c在字典中。

对于30%的数据,1 ≤ N ≤ 100,单词长度之和 ≤ 10000

对于100%的数据,1 ≤ N ≤ 10000,单词长度之和 ≤ 1000000

输出

能生成的最长单词的长度

样例输入
6 h
hihocoder h ho hi hiho iho
样例输出
4

找错ing

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
const int maxn=;
int Next[maxn][],End[maxn],fail[maxn],h[maxn],red[maxn];
int cnt,root=,ans;
int q[],tail,head;
char c[maxn] ,S;
void _init()
{
ans=;cnt=;fail[root]=-;
head=tail=;End[root]=;
for(int i=;i<;i++) Next[root][i]=;
}
void _insert(char s[])
{
int L=strlen(s);
int Now=root;
for(int i=;i<L;i++){
if(!Next[Now][s[i]-'a']) {
Next[Now][s[i]-'a']=++cnt;
fail[cnt]=;End[cnt]=;
for(int i=;i<;i++) Next[cnt][i]=;
h[cnt]=h[Now]+;
}
Now=Next[Now][s[i]-'a'];
}
End[Now]=;
}
void _build()
{
q[++head]=root;
while(tail<head){
int Now=q[++tail];
if(red[fail[Now]]&&End[Now]&&h[fail[Now]]+==h[Now]){
if(h[Now]>ans) ans=h[Now];
red[Now]=;
}
for(int i=;i<;i++){
if(red[Now]&&End[Next[Now][i]]) {
red[Next[Now][i]]=;
ans=max(ans,h[Next[Now][i]]);
}
if(Next[Now][i]){
if(Now==root) fail[Next[Now][i]]=root;
else{
int p=fail[Now];
while(p){
if(Next[p][i]){
fail[Next[Now][i]]=Next[p][i];
break;
}
p=fail[p];
}
if(!p) {
fail[Next[Now][i]]=root;
}
}
q[++head]=Next[Now][i];
}
}
}
} int main()
{
char s[maxn];
int n,i;
_init();
scanf("%d",&n);
cin>>S;
for(i=;i<=n;i++){
scanf("%s",s);
_insert(s);
}
red[Next[root][S-'a']]=;
ans=;
_build();
printf("%d\n",ans);
return ;
}

hihocoder1618 单词接龙的更多相关文章

  1. NOIP2000单词接龙[DFS]

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...

  2. Noip2000 T3 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...

  3. 洛谷 P1019 单词接龙 Label:dfs

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...

  4. 【wikioi】1018 单词接龙

    题目链接 算法:DFS+考你阅题 题目描述: 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中 ...

  5. NOIP2000 单词接龙

    题三.  单词接龙                (27分)    问题描述    单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的 ...

  6. 1172: 单词接龙(XCOJ 暴力DFS)

    1172: 单词接龙 时间限制: 1 Sec  内存限制: 128 MB提交: 12  解决: 5 标签提交统计讨论版 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词 ...

  7. 单词接龙(dragon)

    单词接龙(dragon) 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次) ...

  8. NOIP2000提高组 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  9. 洛谷 P1019 单词接龙【经典DFS,温习搜索】

    P1019 单词接龙 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在 ...

随机推荐

  1. Asp.Net Core 2.0 WebUploader FastDfs 文件上传 分段上传

    功能点: 1. 使用.net core 2.0 实现文件上传 2. 使用webuploader实现单文件,多文件上传 3. 使用webuploader实现大文件的分段上传. 4. 使用webuploa ...

  2. javascript 跨域访问

    JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.因为同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象. 下表给出了相对 http://si ...

  3. vcf2maf

    1.https://github.com/mskcc/vcf2maf 2.https://github.com/cbare/vcf2maf

  4. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  5. 关于ckeditor 之 上传功能

    度了很多文章,看了很多关于ckeditor配置上传功能的文章,没一个写得清楚的, 就是简单的根目录下.config.js 增加 config.filebrowserUploadUrl="/a ...

  6. max_spare_servers到底是个什么意思?

    pm.max_children=500pm.start_servers=280pm.min_spare_servers=50pm.max_spare_servers=500 把max_spare_se ...

  7. mysql数据库优化课程---18、mysql服务器优化

    mysql数据库优化课程---18.mysql服务器优化 一.总结 一句话总结: 1.四种字符集问题:字符集都设置为utf-82.slow log慢查询日志问题3.root密码丢失 1.mysql存在 ...

  8. MySQL之长连接、短连接、连接池

    当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信.客户端必须使用数据库连接来发送命令和接收应答.数据.通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了. ...

  9. Spring Cloud实战

    Spring Cloud实战(一)-Spring Cloud Config Server https://segmentfault.com/a/1190000006149891 https://seg ...

  10. Java中Collection 的基本认识

    集合Conllection的基本概念:1.集合的基本认识:如StringBuffer&StringBuilder是集合(存储的对象类型是String).数组.对象与其很相似,但是还有区别.2. ...