Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sys import stdin
- from collections import deque
- # var ikke definert i den gamle python-versjonen som
- # ligger paa noen av stud sine maskiner
- True = 1
- False = 0
- class Node:
- barn = None
- ratatosk = None
- nesteBarn = None # bare til bruk i DFS
- parent = None
- level = 0
- def __init__(self):
- self.barn = []
- self.ratatosk = False
- self.nesteBarn = 0
- self.parent = None
- self.level = 0
- def dfs(rot):
- nodes = []
- nodes.append(rot)
- rot.level = 0
- while(len(nodes)!=0):
- len1 = len(nodes)
- top = nodes.pop()
- if(top.ratatosk):
- return top.level
- for barn in top.barn:
- barn.parent = top
- nodes.append(barn)
- barn.level = barn.parent.level + 1
- def bfs(rot):
- queue = deque([])
- queue.append(rot)
- rot.level = 0
- while(len(queue)!=0):
- top = queue.popleft()
- if(top.ratatosk):
- return top.level
- for barn in top.barn:
- barn.parent = top
- queue.append(barn)
- barn.level = barn.parent.level +1
- funksjon = stdin.readline().strip()
- antall_noder = int(stdin.readline())
- noder = []
- for i in range(antall_noder):
- noder.append(Node())
- start_node = noder[int(stdin.readline())]
- ratatosk_node = noder[int(stdin.readline())]
- ratatosk_node.ratatosk = True
- for linje in stdin:
- tall = linje.split()
- temp_node = noder[int(tall.pop(0))]
- for barn_nr in tall:
- temp_node.barn.append(noder[int(barn_nr)])
- if funksjon == 'dfs':
- print dfs(start_node)
- elif funksjon == 'bfs':
- print bfs(start_node)
- elif funksjon == 'velg':
- print bfs(start_node)
Add Comment
Please, Sign In to add comment