Guest User

Untitled

a guest
Nov 18th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.64 KB | None | 0 0
  1. from sys import stdin
  2. from collections import deque
  3. # var ikke definert i den gamle python-versjonen som
  4. # ligger paa noen av stud sine maskiner
  5. True = 1
  6. False = 0
  7.  
  8. class Node:
  9.     barn = None
  10.     ratatosk = None
  11.     nesteBarn = None # bare til bruk i DFS
  12.     parent = None
  13.     level = 0
  14.     def __init__(self):
  15.         self.barn = []
  16.         self.ratatosk = False
  17.         self.nesteBarn = 0
  18.         self.parent = None
  19.         self.level = 0
  20.  
  21. def dfs(rot):
  22.     nodes = []
  23.     nodes.append(rot)
  24.     rot.level = 0
  25.     while(len(nodes)!=0):
  26.         len1 = len(nodes)
  27.         top = nodes.pop()
  28.         if(top.ratatosk):
  29.             return top.level
  30.         for barn in top.barn:
  31.             barn.parent = top
  32.             nodes.append(barn)
  33.             barn.level = barn.parent.level + 1
  34.  
  35. def bfs(rot):
  36.     queue = deque([])
  37.     queue.append(rot)
  38.     rot.level = 0
  39.     while(len(queue)!=0):
  40.         top = queue.popleft()
  41.         if(top.ratatosk):
  42.             return top.level
  43.         for barn in top.barn:
  44.             barn.parent = top
  45.             queue.append(barn)
  46.             barn.level = barn.parent.level +1
  47.  
  48.  
  49. funksjon = stdin.readline().strip()
  50. antall_noder = int(stdin.readline())
  51. noder = []
  52. for i in range(antall_noder):
  53.     noder.append(Node())
  54. start_node = noder[int(stdin.readline())]
  55. ratatosk_node = noder[int(stdin.readline())]
  56. ratatosk_node.ratatosk = True
  57. for linje in stdin:
  58.     tall = linje.split()
  59.     temp_node = noder[int(tall.pop(0))]
  60.     for barn_nr in tall:
  61.         temp_node.barn.append(noder[int(barn_nr)])
  62.  
  63. if funksjon == 'dfs':
  64.     print dfs(start_node)
  65. elif funksjon == 'bfs':
  66.     print bfs(start_node)
  67. elif funksjon == 'velg':
  68.     print bfs(start_node)
Add Comment
Please, Sign In to add comment