G2.add_node('special', {'label': 'special'})
special_edges = []
for n, ndat in G2.nodes_iter(data=True):
    if ndat['label'] != 'special' and ndat['label'] >= 0:
        special_edges.append((n, 'special', {'weight': 0}))
G2.add_edges_from(special_edges)
for n, ndat in G2.nodes_iter(data=True):
    if ndat['label'] == -1:
        path = nx.shortest_path(G2, source=n, target='special', weight='weight'
            )
ndat['closest'] = path[-2]
G2.remove_node('special')
Найдите кратчайший путь к одному из множества узлов с атрибутом