Pagini recente » Cod sursa (job #1474111) | Cod sursa (job #1478328) | Cod sursa (job #1064888) | Cod sursa (job #3125489)
#include <bits/stdc++.h>
using namespace std;
string file = "nfa";
ifstream fin(file + ".in");
ofstream fout(file + ".out");
int n, m, k, q;
vector<pair<int, char>> g[301];
int source;
bitset <301> dest;
int main() {
fin >> n >> m >> k;
fin >> source;
for (int i = 1; i <= k; i++) {
int x;
fin >> x;
dest[x] = true;
}
for (int i = 1; i <= m; i++) {
int x, y;
char c;
fin >> x >> y >> c;
g[x].push_back({y, c});
}
fin >> q;
for (int i = 1; i <= q; i++) {
string s;
fin >> s;
queue <pair<int, int>> Q;
Q.push({source, 0});
bool ok = false;
while (!Q.empty() && !ok) {
int nod = Q.front().first;
int lg = Q.front().second;
Q.pop();
if (lg == s.length()) {
if (dest[nod])
ok = true;
continue;
}
for (auto &j : g[nod])
if (j.second == s[lg])
Q.push({j.first, lg + 1});
}
delete &Q;
if (ok)
fout << "1\n";
else
fout << "0\n";
}
return 0;
}