Iam_Sandeep

Check whether given graph is valid tree bfs and dfs

Mar 14th, 2022 (edited)
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.51 KB | None | 0 0
  1. lnk="https://www.lintcode.com/problem/178/"
  2. from collections import deque,defaultdict as dd
  3. class Solution:
  4.     def validTree(self, n, edges):
  5.         vis,g=set(),dd(list)
  6.         for a,b in edges:
  7.             g[a].append(b);g[b].append(a)
  8.         def iscycle(x):
  9.             q=deque()
  10.             vis.add(x)
  11.             q.append((x,-1))
  12.             while q:
  13.                 v,p=q.popleft()
  14.                 for i in g[v]:
  15.                     if i in vis and i!=p:
  16.                         return True
  17.                     elif i==p:continue
  18.                     else:
  19.                         vis.add(i)
  20.                         q.append((i,v))
  21.             return False
  22.         cnt=0
  23.         for i in range(n):
  24.             if i not in vis:
  25.                 if iscycle(i):
  26.                     return False
  27.                 cnt+=1
  28.                 if cnt>1:return False
  29.         return True
  30. DFS version
  31. from collections import defaultdict as dd,deque
  32. class Solution:
  33.     def validTree(self, n, edges):
  34.         g,vis=dd(list),set()
  35.         for a,b in edges:g[a].append(b);g[b].append(a)
  36.         def dfs(s,p):
  37.             vis.add(s)
  38.             for i in g[s]:
  39.                 if i==p:continue
  40.                 elif i in vis:return False
  41.                 else:
  42.                     dfs(i,s)
  43.             return True
  44.         cnt=0
  45.         for i in range(n):
  46.             if i not in vis:
  47.                 if dfs(i,-1)==False:return False
  48.                 cnt+=1
  49.                 if cnt>1:return False
  50.         return True
Add Comment
Please, Sign In to add comment