defining dijkstra function