Cod sursa(job #2591206)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 29 martie 2020 23:44:59
Problema NFA Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("nfa.in");
ofstream g("nfa.out");

const int SIGMA=26;
const int NMAX=305;
int n,k,x,y,m,start,q;
char c;
bool stari_finale[NMAX];
vector <int> tranzitii[NMAX][SIGMA];

bool nfa(string s)
{
    set <int> current;
    current.insert(start);
    for(int i=0;i<(int)s.size();i++)
    {
        set <int> next;
        int lit=s[i]-'a';
        for(auto it:current)
        {
            for(int j=0;j<(int)tranzitii[it][lit].size();j++)
                next.insert(tranzitii[it][lit][j]);
        }
        current=next;
    }
    for(auto it:current)
    {
        if(stari_finale[it])
            return 1;
    }
    return 0;
}
int main()
{
    f>>n>>m>>k;
    f>>start;
    for(int i=1;i<=k;i++)
    {
        f>>x;
        stari_finale[x]=1;
    }
    while(m--)
    {
        f>>x>>y>>c;
        tranzitii[x][c-'a'].push_back(y);
    }
    f>>q;
    while(q--)
    {
        string cuv;
        f>>cuv;
        g<<nfa(cuv)<<"\n";
    }
    return 0;
}