要点

  • 并没问具体方案,说明很可能不是构造。
  • 思考不断读入这个文本串,然后中间不出现某些文法的串。啊,这就是个自动机。
  • 将不合法串使用ac自动机构成一个Trie图,我们需要的字符串就是在这个自动机上无限走路但是却不会撞到危险节点。
  • 这样只要从根开始跑dfs判有环即存在答案。
  • 注意还要加上ac自动机的性质:某节点的fail指针指向的如果是危险的,则它也是危险的。"she"的'e'指向"he"的'e',说明she里有he,也是不可走。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <queue>
using namespace std; const int maxn = 2005;
int n;
string s[maxn]; struct ac_auto {
int ch[30005][2];
int fail[30005];
bool mark[30005];
int vis[30005];
int sz; void insert(string s) {
int now = 0;
for (int i = 0; i < s.length(); i++) {
int c = s[i] - '0';
if (!ch[now][c]) {
ch[now][c] = ++sz;
mark[sz] = 0;
}
now = ch[now][c];
}
mark[now] = 1;
} void getfail() {
queue<int> Q;
for (int i = 0; i < 2; i++)
if (ch[0][i])
fail[ch[0][i]] = 0, Q.push(ch[0][i]);
while (!Q.empty()) {
int u = Q.front(); Q.pop();
for (int i = 0; i < 2; i++)
if (ch[u][i]) {
fail[ch[u][i]] = ch[fail[u]][i], Q.push(ch[u][i]);
if (mark[fail[ch[u][i]]]) mark[ch[u][i]] = 1;
}
else ch[u][i] = ch[fail[u]][i];
}
} void dfs(int cur) {
vis[cur] = 1;
for (int i = 0; i < 2; i++) {
int to = ch[cur][i];
if (to) {
if (mark[to]) continue;
if (vis[to] == 1) {
cout << "TAK\n";
exit(0);
}
if (!vis[to]) dfs(to);
}
}
vis[cur] = 2;
}
}ac; int main() {
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s[i];
ac.insert(s[i]);
}
ac.getfail();
ac.dfs(0);
cout << "NIE\n";
return 0;
}

洛谷2444(Trie图上dfs判环)的更多相关文章

  1. cf1278D——树的性质+并查集+线段树/DFS判环

    昨天晚上本来想认真打一场的,,结果陪女朋友去了.. 回来之后看了看D,感觉有点思路,结果一直到现在才做出来 首先对所有线段按左端点排序,然后用并查集判所有边是否联通,即遍历每条边i,和前一条不覆盖它的 ...

  2. CodeForces 659E New Reform (图的遍历判环)

    Description Berland has n cities connected by m bidirectional roads. No road connects a city to itse ...

  3. Atcoder Grand Contest 032C(欧拉回路,DFS判环)

    #include<bits/stdc++.h>using namespace std;int vis[100007];vector<int>v[100007];vector&l ...

  4. 洛谷 P1379 八数码难题 Label:判重&&bfs

    特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...

  5. 洛谷P1219 八皇后【dfs】

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  6. 【BZOJ1064】[NOI2008] 假面舞会(图上DFS)

    点此看题面 大致题意:有\(k\)种面具(\(k\)是一个未知数且\(k≥3\),每种面具可能有多个),已知戴第\(i\)种面具的人能看到第\(i+1\)种面具上的编号,特殊的,戴第\(k\)种面具的 ...

  7. 洛谷1378 油滴扩展 dfs进行回溯搜索

    题目链接:https://www.luogu.com.cn/problem/P1378 题目中给出矩形的长宽和一些点,可以在每个点放油滴,油滴会扩展,直到触碰到矩形的周边或者其他油滴的边缘,求出剩余面 ...

  8. BZOJ2938 & 洛谷2444:[POI2000]病毒——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2938 https://www.luogu.org/problemnew/show/P2444 二进制 ...

  9. cf374C Inna and Dima dfs判环+求最长链

    题目大意是有一个DIMA四种字母组成的矩阵,要在矩阵中找最长的DIMADIMADIMA……串,连接方式为四方向连接,问最长能找到多少DIMA.字母可以重复访问,如果DIMA串成环,即可以取出无限长的D ...

随机推荐

  1. sublime 3好用快捷键

    sublime 3好用快捷键 自己常用 删除行 [ { "keys": ["ctrl+shift+d"], "command": " ...

  2. BZOJ_5359_[Lydsy1805月赛]寻宝游戏_DP

    BZOJ5359_[Lydsy1805月赛]寻宝游戏_DP Description begin.lydsy.com/JudgeOnline/upload/201805.pdf 我们需要找到一条权值最大 ...

  3. BZOJ2329:[HNOI2011]括号修复

    浅谈\(splay\):https://www.cnblogs.com/AKMer/p/9979592.html 浅谈\(fhq\)_\(treap\):https://www.cnblogs.com ...

  4. 用linqpad来插入多条数据

    其中Customers为数据库的某个表名, Custom自动被默认为单条记录的对象, 利用构造,InsertOnSubmit, 以及SubmitChanges实现插入数据. 注意:linqpad的la ...

  5. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  6. NSCLIENT++可以采集的指标

    Documentation   Information   Commands/Modules   CheckDisk   CheckFileSize   CheckDriveSize   CheckF ...

  7. DCloud-HTML5+:5+ App开发入门指南

    ylbtech-DCloud-HTML5+:5+ App开发入门指南 1.返回顶部 1. 5+ App开发入门指南 App App入门 HTML5 Plus应用概述 HTML5 Plus移动App,简 ...

  8. rmmod: chdir(/lib/modules): No such file or directory

    内核版本:linux3.4.20 交叉编译器:arm-linux-gcc 4.3.3 busybox :  busybox 1.20 问题: 使用rmmod会出现 rmmod : chdir(/lib ...

  9. 虚拟机ubuntu和windows共享文件

    设置虚拟机ubuntu和windows共享文件(方便复制文件到本机) (需要安装samba)   登陆ubuntu系统后,点击左边的文件夹.右击新建个文件夹.   设置为共享   ubuntu会提示你 ...

  10. sql web Admin 源码.net 升级

    http://www.cnblogs.com/foundation/archive/2008/10/07/1305297.html