def METHOD_NAME(split_graph):
    """
        1. create H (admissable graph) based on Section 3
        http://fmdb.cs.ucla.edu/Treports/930014.pdf
        2. calculate the max flow f' on H using networkx
        3. construct Residual graph from f' on H based on
        https://www.topcoder.com/community/data-science/\
        data-science-tutorials/minimum-cost-flow-part-two-algorithms/
        4. calculate Pi based on Section 3 again
        """
    # Step 1
    H = nx.DiGraph()
    H.add_nodes_from(split_graph)
    for ed in split_graph.edges(data=True):
        Cxy = int(ed[2].get("capacity", sys.maxsize))
        Axy = int(ed[2]["weight"])
        if Axy == 0 and Cxy > 0:
            H.add_edge(ed[0], ed[1], capacity=Cxy, weight=Axy)
    # Step 2
    flow_value, flow_dict = nx.maximum_flow(H, "s", "t")
    # Step 3
    R = nx.DiGraph()
    R.add_nodes_from(H)
    for ed in H.edges(data=True):
        Xij = flow_dict[ed[0]][ed[1]]
        Uij = ed[2].get("capacity", sys.maxsize)
        Cij = ed[2]["weight"]
        if (Uij - Xij) > 0:
            R.add_edge(ed[0], ed[1], weight=Cij)
        if Xij > 0:
            R.add_edge(ed[1], ed[0], weight=-1 * Cij)
    # Step 4
    pai = dict()
    for n in R.nodes():
        if nx.has_path(R, "s", n):
            pai[n] = 0
        else:
            pai[n] = 1
    return pai