fork download
  1. user={}
  2. follow={}
  3. def AddUser(id1,name):
  4. global user
  5. k = list(user.keys())
  6. if k.count(id1)==0:user[id1] = name
  7. else: print('ID exists.')
  8. def AddFollow(id1,id2):
  9. global follow
  10. k = list(user.keys())
  11. y = list(follow.keys())
  12. if k.count(id2)==0 or k.count(id1)==0:
  13. print('No such user.')
  14. if y.count(id1)==1:
  15. if len(follow[id1])!=0:
  16. if follow[id1].count(id2)!=0:print('Follow exists.')
  17. else:follow[id1].append(id2)
  18. if y.count(id1)==0:follow[id1] = [id2]
  19. def ListFollower(id1):
  20. k = list(user.keys())
  21. k1 = list(follow.keys())
  22. if k.count(id1)==0:print('No such user.')
  23. else:
  24. m = 0
  25. p = []
  26. for i in k1:
  27. if follow[i].count(id1)==0:m +=0
  28. if follow[i].count(id1)!=0:
  29. p.append(i)
  30. m+=1
  31. if m ==0:print('No followers.')
  32. else:
  33. p.sort()
  34. for i in p:print(i,user[i])
  35. def CommonFollow(id1,id2):
  36. k,j = list(user.keys()),list(follow.keys())
  37. if k.count(id1)==0 or k.count(id2)==0:print('No such user.')
  38. else:
  39. if j.count(id1)==0 or j.count(id2)==0:print('No common follow.')
  40. else:
  41. p = []
  42. m = 0
  43. for i in follow[id1]:
  44. for j in follow[id2]:
  45. if i==j:
  46. p.append(i)
  47. m+=1
  48. if m==0:print('No common follow.')
  49. else:
  50. p.sort()
  51. for i in p:print(i,user[i])
  52. def Recommend(id1):
  53. k1 = list(user.keys())
  54. k = list(follow.keys())
  55. if k1.count(id1)==0:print('No such user.')
  56. if k.count(id1)==0:print('No recommendation.')
  57. else:
  58. u = 0
  59. p = []
  60. for i in follow[id1]:
  61. if k.count(i)!=0:
  62. for j in follow[i]:
  63. if j!=id1 and follow[id1].count(j)==0:p.append(j)
  64. p1 = []
  65. for i in p:
  66. o = [i,p.count(i)]
  67. p1.append(o)
  68. for i in p1:
  69. while p1.count(i)!=1:
  70. p1.remove(i)
  71. p1 = sorted(p1,key = lambda k : k[1])[::-1]
  72. p11 = p1[:]
  73. p2 = [i[1] for i in p1]
  74. if len(p2)==1:
  75. print(p1[0][0],user[p1[0][0]],'('+str(p1[0][1])+')')
  76. u = 1
  77. else:
  78. p3 = []
  79. p4 = []
  80. for i in p1:
  81. if p2.count(i[1])==1:
  82. print(i[0],user[i[0]],'('+str(i[1])+')')
  83. u = 1
  84. else:
  85. p3 = []
  86. for j in p1:
  87. if j[1]==i[1]:
  88. p3.append(j)
  89. p3 = sorted(p3,key = lambda k:k[0])
  90. for e in p3:
  91. print(e[0],user[e[0]],'('+str(e[1])+')')
  92. p1.remove(e)
  93. u = 1
  94. if u==0: print('No recommendation.')
  95. def ShortestPath(src,des):
  96. k = list(user.keys())
  97. k1 = list(follow.keys())
  98. visited = {}
  99. previous = {}
  100. if k.count(src)==0 or k.count(des)==0:
  101. print('No such user.')
  102. else:
  103. for i in k:
  104. if i!=src:
  105. visited[i]=False
  106. else: visited[i]=True
  107. q = [src]
  108. y = 0
  109. while len(q)!=0 and visited[des]==False:
  110. current = q.pop(0)
  111. if k1.count(current)==1:
  112. for n in follow[current]:
  113. if visited[n]==False:
  114. q.append(n)
  115. visited[n]=True
  116. previous [n] = current
  117. if visited[des]==True:
  118. break
  119. if len(q)>len(k)**2:break
  120. if visited[des]==True:
  121. road = [des]
  122. u = des
  123. while u!=src:
  124. for i in previous:
  125. if i == u:
  126. road.append(previous[i])
  127. u = previous[i]
  128. if u==src:break
  129. road = road[::-1]
  130. for i in road:print(i,user[i])
  131. else:print('No path found.')
  132. def main():
  133. command=input().split()
  134. while(command[0]!="END"):
  135. if (command[0]=="AddUser"):
  136. AddUser(int(command[1]),command[2])
  137. elif (command[0]=="AddFollow"):
  138. AddFollow(int(command[1]),int(command[2]))
  139. elif (command[0]=="CommonFollow"):
  140. CommonFollow(int(command[1]),int(command[2]))
  141. elif (command[0]=="ListFollower"):
  142. ListFollower(int(command[1]))
  143. elif (command[0]=="Recommend"):
  144. Recommend(int(command[1]))
  145. elif (command[0]=="ShortestPath"):
  146. ShortestPath(int(command[1]),int(command[2]))
  147. command=input().split()
  148. return
  149. main()
Runtime error #stdin #stdout #stderr 0.14s 23688KB
stdin
AddUser 1 a
AddUser 2 b
AddUser 3 c
AddUser 4 d
AddUser 5 e
AddUser 6 f
AddUser 7 g
AddUser 8 h
AddUser 9 i
AddUser 10 j
AddFollow 1 2
AddFollow 1 3
AddFollow 1 5
AddFollow 1 6
AddFollow 1 7
AddFollow 1 8
AddFollow 1 10
AddFollow 2 1
AddFollow 2 3
AddFollow 2 5
AddFollow 2 6
AddFollow 2 7
AddFollow 2 8
AddFollow 3 1
AddFollow 3 2
AddFollow 3 4
AddFollow 3 7
AddFollow 3 8
AddFollow 3 10
AddFollow 4 3
AddFollow 4 5
AddFollow 4 7
AddFollow 4 8
AddFollow 4 9
AddFollow 4 10
AddFollow 5 1
AddFollow 5 2
AddFollow 5 4
AddFollow 5 6
AddFollow 5 7
AddFollow 5 10
AddFollow 6 1
AddFollow 6 2
AddFollow 6 5
AddFollow 6 7
AddFollow 6 8
AddFollow 6 10
AddFollow 7 1
AddFollow 7 2
AddFollow 7 3
AddFollow 7 4
AddFollow 7 5
AddFollow 7 6
AddFollow 7 8
AddFollow 7 9
AddFollow 8 1
AddFollow 8 2
AddFollow 8 3
AddFollow 8 4
AddFollow 8 6
AddFollow 8 7
AddFollow 9 4
AddFollow 9 7
AddFollow 9 10
AddFollow 10 1
AddFollow 10 3
AddFollow 10 4
AddFollow 10 5
AddFollow 10 6
AddFollow 10 9
ShortestPath 1 10
stdout
1 a
10 j
stderr
Traceback (most recent call last):
  File "./prog.py", line 149, in <module>
  File "./prog.py", line 147, in main
EOFError: EOF when reading a line