Pagini recente » Cod sursa (job #2536499) | Cod sursa (job #2878924) | Cod sursa (job #854419) | Cod sursa (job #1132975) | Cod sursa (job #2588784)
#include <bits/stdc++.h>
using namespace std;
ifstream f("nfa.in");
ofstream g("nfa.out");
int n,i,x,y,start,ok,l,q,m,k,nr;
bool viz[1003][1003];
char c;
char s[1003];
bool fin[1003];
vector <pair<int,char>>v[1003];
void dfs(int nod,int k)
{
if(ok)return;
if(k==nr+1)
{
if(fin[nod])ok=1;
return;
}
for(auto i:v[nod])
{
//if(viz[k][i.first]>q+100)viz[k][i.first]=0;
if(viz[k][i.first]==0&&i.second==s[k])
{
viz[k][i.first]=1;
dfs(i.first,k+1);
}
}
}
void Reset()
{
int i,j;
for(i=0;i<=155;i++)
for(j=1;j<=n;j++)
viz[i][j]=0;
}
int main()
{
ios_base::sync_with_stdio(0);
f.tie(0);
f>>n>>m>>k>>start;
for(i=1; i<=k; i++)
{
f>>x;
fin[x]=1;
}
for(i=1; i<=m; i++)
{
f>>x>>y>>c;
v[x].push_back({y,c});
}
f>>q;
while(q--)
{
ok=0;
memset(viz,0,sizeof(viz));
f>>s+1;
nr=strlen(s+1);
dfs(start,1);
g<<ok<<'\n';
}
return 0;
}