Pagini recente » Cod sursa (job #1634925) | Cod sursa (job #1228271) | Cod sursa (job #2827043) | Cod sursa (job #1648556) | Cod sursa (job #2588259)
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()