Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import defaultdict
- class Graph:
- def __init__(self):
- self.graph = defaultdict(list)
- def addEdge(self,u,v):
- self.graph[u].append(v)
- def BFS(self, s):
- path=[]
- d2={}
- queue = []
- queue.append(s)
- d2[s]=1
- while queue:
- s = queue.pop(0)
- path.append(s)
- for i in self.graph[s]:
- if i not in d2:
- queue.append(i)
- d2[i]=1
- return path
- def DIAMETER(self,s):
- path=[]
- d2={}
- dist={}
- queue=[]
- queue.append(s)
- d2[s]=1
- dist[s]=0
- d=0
- while queue:
- s= queue.pop()
- for i in self.graph[s]:
- if i not in d2:
- queue.append(i)
- dist[i]=dist[s]+1
- d=max(dist[i],d)
- d2[i]=1
- return d
- g=Graph()
- n,m=map(int,input().split())
- d1={}
- l1=list(range(1,n+1))
- for item in l1:
- d1[item]=1
- for i in range(0,m):
- x,y=map(int,input().split())
- g.addEdge(x,y)
- g.addEdge(y,x)
- ans=0
- for item in l1:
- if len(d1)==0:
- break
- else :
- if item in d1:
- path=g.BFS(item)
- d=g.DIAMETER(path[-1])
- ans=max(ans,(d+1)//2)
- for x in path:
- del d1[x]
- print(ans)
Add Comment
Please, Sign In to add comment