Cod sursa(job #2588790)

Utilizator BogdanGhGhinea Bogdan BogdanGh Data 25 martie 2020 14:24:16
Problema NFA Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#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[503][503],fin[503];
char c,s[503];
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]==0&&i.second==s[k])
            {
                viz[k][i.first]=1;
                dfs(i.first,k+1);
            }
        }
}
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;
}