Cod sursa(job #2593582)

Utilizator coronavirusCovid19 coronavirus Data 4 aprilie 2020 11:40:43
Problema NFA Scor 100
Compilator cpp-64 Status done
Runda corona_day6 Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("nfa.in");
ofstream fout("nfa.out");

int n, m, k, start, l;
bool ok;
bool stop[301];
vector<pair<int, char>>G[301];
char str[151];
bool viz[301][151];

void DFS(int nod, int idx)
{
    if(ok) return;
    if(idx == l + 1)
    {
        if(stop[nod])
        {
            ok = 1;
            return;
        }
    }

    for(auto it: G[nod])
    {
        if(it.second == str[idx] && !viz[it.first][idx])
        {
            viz[it.first][idx] = 1;
            DFS(it.first, idx + 1);
        }
    }
}

int main()
{
    fin >> n  >> m >> k;
    fin >> start;

    for(int i = 1; i <= k; ++i)
    {
        int x;
        fin >> x;
        stop[x] = 1;
    }

    for(int i = 1; i <= m; ++i)
    {
        int x, y;
        char ch;
        fin >> x >> y >> ch;
        G[x].push_back(make_pair(y, ch));
    }

    int Q;
    fin >> Q;

    while(Q--)
    {
        fin >> (str + 1);
        l = strlen(str + 1);
        ok = 0;
        DFS(start, 1);

        fout << ok << "\n";
        memset(viz, 0, sizeof(viz));
    }

    return 0;
}