Cod sursa(job #3125487)

Utilizator user12345user user user user12345 Data 3 mai 2023 15:04:08
Problema NFA Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>
using namespace std;

string file = "nfa";
ifstream fin(file + ".in");
ofstream fout(file + ".out");

int n, m, k, q;
vector<pair<int, char>> g[301];
int source;
bitset <301> dest;

int main() {

    fin >> n >> m >> k;
    fin >> source;

    for (int i = 1; i <= k; i++) {

        int x;
        fin >> x;
        dest[x] = true;
    }

    for (int i = 1; i <= m; i++) {

        int x, y;
        char c;

        fin >> x >> y >> c;
        g[x].push_back({y, c});
    }

    fin >> q;

    for (int i = 1; i <= q; i++) {

        string s;
        fin >> s;

        queue <pair<int, int>> Q;
        Q.push({source, 0});
        bool ok = false;

        while (!Q.empty() && !ok) {

            int nod = Q.front().first;
            int lg = Q.front().second;
            Q.pop();

            if (lg == s.length()) {

                if (dest[nod])
                    ok = true;
                continue;
            }

            for (auto &j : g[nod])
                if (j.second == s[lg])
                    Q.push({j.first, lg + 1});
        }

        if (ok)
            fout << "1\n";
        else
            fout << "0\n";
    }

    return 0;
}