Thanks for your answer, now, i get the correct distances, nice! I was benchmarking some Floyd APSP source-code. Some results (in seconds) on a random graph with 800 nodes and abouts 10000 edges: Networkx : 82.66 Python with array : 38.97 Numpy from Networkx : 1.67 (no predecessors calculation) graph-tool : 0.91 Scipy (Cython) : 0.50 Pure C code : 0.35 Below the code I used for Graph-tool test: # ------------------- import graph_tool as gt from graph_tool.topology import shortest_distance import numpy as np from random import randrange def random_edges(n, density, max_weight=100): M=n*(n-1)//2 m=int(density*M) edges=set() wedges=[] while len(edges)<m: L=(randrange(n),randrange(n)) if L[0]!=L[1] and L not in edges: w=float(randrange(max_weight)) wedges.append(L+(w,)) edges.add(L) return wedges n=800 density=0.33 wedges=random_edges(n, density) start=clock() g= gt.Graph(directed=True) weight = g.new_edge_property("double") g.add_edge_list(np.array(wedges), eprops=[weight]) dist = shortest_distance(g, weights=weight, dense=True) end=clock() print("graph-tool \t: %.2f" %(end-start)) # ------------------- -- Sent from: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/