Pagini recente » Cod sursa (job #1903379) | Cod sursa (job #312969) | Cod sursa (job #198619) | Cod sursa (job #3155189) | Cod sursa (job #2593648)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("nfa.in");
ofstream fout ("nfa.out");
void usain_bolt()
{
ios::sync_with_stdio(false);
fout.tie(0);
}
const int N = 3e2 + 5;
vector < pair < int, char > > a[N];
int sz;
char s[N];
bool last[N], f[N][N];
void dfs(int k, int i, bool & ok)
{
//fout << k << " ";
if(ok == true) return ;
if(k == strlen(s + 1) && last[i] == true)
ok = true;
else if(k == strlen(s + 1)) return ;
for(auto v : a[i]) {
if(v.second == s[k + 1] && f[k + 1][v.first] == false) {
f[k + 1][v.first] = true;
dfs(k + 1, v.first, ok);
}
}
}
int main()
{
usain_bolt();
int n, m, k, fst;
fout >> n >> m >> k >> fst;
for(int i = 1; i <= k; ++i) {
int x;
fout >> x;
last[x] = true;
}
for(int i = 1; i <= m; ++i) {
int x, y;
char ch;
fout >> x >> y >> ch;
a[x].push_back({y, ch});
}
int q;
fout >> q;
for(; q; --q) {
fout >> (s + 1);
sz = strlen(s + 1);
bool ok = false;
dfs(0, fst, ok);
fout << ok << "\n";
memset(f, 0, sizeof(f));
}
return 0;
}