
import networkx as nx

def confluencia(gr, n1, n2):
    c = 0
    if n2 in gr[n1]:
        c = 1
    elif nx.has_path(gr, n1, n2):
        c = 2
    return c

def recorregut1(gr, nriu):
    ln = [nriu]
    while gr.out_degree(nriu) > 0:
        nriu = next(gr.successors(nriu))
        # alternativa: nriu = list(gr[nriu])[0]
        ln.append(nriu)
    return ln

def recorregut2(gr, nriu):
    return list(nx.dfs_preorder_nodes(gr, nriu))

def recorregut3(gr, nriu):
    ds = nx.dfs_successors(gr, nriu)
    ls = map(lambda x:x[0], ds.values())
    return [nriu] + list(ls) 

def recorregut4(gr, nriu):
    for node in gr.nodes:
        if gr.out_degree(node) == 0 and nx.has_path(gr, nriu, node):
            return nx.shortest_path(gr, nriu, node)
    return []

# tria la solució que desitgis provar
recorregut = recorregut1
