djikstra


import sys
class graph():
def init(self,vertices):
self.v=vertices
self.graph=[[0 for col in range(vertices)]for row in range(vertices)]

def printSol(self,dist):
print("Vertex \t Dist from source")
for node in range(self.v):
print(node,"\t",dist[node])

def mindist(self,dist,sptset):
min=sys.maxsize
for v in range(self.v):
if dist[v]<min and sptset[v]==False:
min=dist[v]
mind_index=v
return mind_index

def dijikstra(self,src):
dist=[sys.maxsize]*self.v
dist[src]=0
sptset=[False]*self.v
for count in range(self.v):
u=self.mindist(dist,sptset)
sptset[u]=True
for v in range(self.v):
if self.graph[u][v]>0 and sptset[v]==False and dist[v]>dist[u]+self.graph[u][v]:
dist[v]=dist[u]+self.graph[u][v]
self.printSol(dist)

g=graph(5)
print(g.graph)
g.graph=[[0,3,0,7,0],
[3,0,4,2,0],
[0,4,0,5,6],
[7,2,5,0,4],
[0,0,6,4,0]]
g.dijikstra(0)