implemented Dijkstras aproach