Pagini recente » Cod sursa (job #274460) | Cod sursa (job #2889617) | Cod sursa (job #2892716) | Cod sursa (job #2709122) | Cod sursa (job #2595443)
#include <bits/stdc++.h>
#define PLEC fin.close(); fout.close(); return 0;
using namespace std;
using PIC = pair<int, char>;
using VP = vector<PIC>;
using VVP = vector<VP>;
using VB = vector<bool>;
using VVB = vector<VB>;
ifstream fin("nfa.in");
ofstream fout("nfa.out");
VVP g;
VVB viz;
VB term;
string str;
int lenght;
bool ok;
inline void DFS(int x, int k) {
if (k == lenght && term[x])
ok = true;
if (!ok && k < lenght)
for (const PIC& P : g[x])
if (P.second == str[k] && !viz[P.first][k]) {
viz[P.first][k]= true;
DFS(P.first, k + 1);
}
}
int n, m, k, q, sef, x, y;
char ch;
int main() {
fin >> n >> m >> k >> sef;
term = VB(n + 1);
for (int i = 1; i <= k; ++i) {
fin >> x;
term[x] = true;
}
g = VVP(n + 1);
for (int i = 1; i <= m; ++i) {
fin >> x >> y >> ch;
g[x].emplace_back(y, ch);
}
fin >> q;
for (int i = 1; i <= q; ++i) {
fin >> str;
lenght = static_cast<int>(str.size());
ok = false;
viz = VVB(n + 1, VB(lenght + 1));
DFS(sef, 0);
fout << ok << '\n';
}
PLEC
}