Cod sursa(job #2588259)

Utilizator lauratenderLaura Tender lauratender Data 24 martie 2020 16:33:53
Problema NFA Scor 20
Compilator py Status done
Runda Arhiva de probleme Marime 1.16 kb
def AFN():
    global dch, q0, end, cuv, lng
    acceptat = 0
    coada = [[q0, 0]]
    p = 0
    u = 0
    parcurs = 0
    while parcurs <= lng and p <= u:
        nodcurent = coada[p][0]
        parcurs = coada[p][1]
        if parcurs == lng:
            if end[nodcurent] == 1:
                acceptat = 1
                parcurs += 1
        else:
            for L in dch[nodcurent]:
                if L[1] == cuv[parcurs]:
                    coada.append([L[0], parcurs + 1])
                    u += 1
        p += 1
    if acceptat == 1:
        g.write('1\n')
    else:
        g.write('0\n')

f = open ("nfa.in", "r")
g = open ("nfa.out", "w")
L=f.readline().split()
for i in range(3):
    L[i]=int(L[i])
N = L[0]
M = L[1]
K = L[2]
q0 = int(f.readline())
L = f.readline().split()
end = [0]*(N+1)
for i in range (K):
    end[int(L[i])]=1
dch = {i:[] for i in range(N+1)}
for i in range(M):
    L = f.readline().split()
    q1 = int(L[0])
    q2 = int(L[1])
    c = L[2]
    dch[q1].append([q2, c])
Q = int(f.readline())
for i in range(Q):
    cuv = f.readline().split()
    cuv = cuv[0]
    lng = len(cuv)
    AFN()