Pagini recente » Cod sursa (job #2257341) | Cod sursa (job #2588106)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream cin ("nfa.in");
ofstream cout ("nfa.out");
int n, m, k, qr, start, x, y;
char c;
bool fin[305], inq[305];
string s;
vector <int> q, temp;
vector <pair <int, char>> g[305];
int main() {
cin >> n >> m >> k >> start;
for(int i = 1; i <= k; i++)
cin >> x, fin[x] = 1;
for(; m; m--) {
cin >> x >> y >> c;
g[x].push_back({y, c});
}
cin >> qr;
for(; qr; qr--) {
cin >> s;
q.clear();
q.push_back(start);
for(int i = 1; i <= n; i++)
inq[i] = 0;
for(int i = 0; i < s.size(); i++) {
temp = q;
for(auto &nod : q)
inq[nod] = 0;
q.clear();
for(auto &nod : temp) {
for(auto &fiu : g[nod]) {
if(fiu.second == s[i] && inq[fiu.first] == 0)
q.push_back(fiu.first), inq[fiu.first] = 1;
}
}
}
bool ok = 0;
for(auto &nod : q)
ok |= fin[nod];
cout << ok << "\n";
}
return 0;
}