import collections
whileTrue:try:
m =int(input().strip())
n =int(input().strip())
z =int(input().strip())
list_ =[]
depend =[0for _ inrange(m)]
dict_ = collections.defaultdict(list)for i inrange(z):
list_.append(list(map(int,input().strip().split(' '))))
depend[list_[i][1]-1]+=1
dict_[list_[i][0]-1].append(list_[i][1]-1)except:
queue =[i for i inrange(m)if depend[i]==0]
ans =0while queue:
ans +=1for i inrange(n):if queue:
a = queue.pop(0)
depend[a]-=1for value in dict_[a]:
depend[value]-=1for j inrange(m):if j notin queue and depend[j]==0:
queue.append(j)print(ans)
exit()
第三题
deftrackback(x,y,path,ans, count, list_):if x == des_x and y == des_y:if count == num0+1:
ans.append(list(path))return ans
for dx, dy in[(1,0),(-1,0),(0,1),(0,-1)]:if0<= x+dx < m and0<= y+dy < n and(list_[x+dx][y+dy]==0or list_[x+dx][y+dy]==2):
list_[x+dx][y+dy]=-1
count +=1
path.append((x+dx,y+dy))
ans = trackback(x+dx, y+dy, path, ans, count, list_)
path.pop()
count -=1
list_[x+dx][y+dy]=0return ans
whileTrue:try:
m, n =map(int,input().strip().split(' '))
list_ =[]
num0 =0for i inrange(m):
l =list(map(int,input().strip().split(' ')))for j inrange(n):if l[j]==0:
num0 +=1elif l[j]==1:
start_x = i
start_y = j
elif l[j]==2:
des_x = i
des_y = j
list_.append(l)
ans =[]
path =[(start_x,start_y)]
ans = trackback(start_x, start_y, path, ans,0, list_)print(ans)except:
exit()