from graph import *

def ignore(v):
    pass

def dfs(g, s, pre, post=ignore, fresh=True):
    def visit(n):
        n.setColor('gray')
        pre(n)
        for v in n.adj:
            if v.getColor() == 'white':
                visit(v)
        post(n)
    if fresh:
        # want this search to be independent of any previous searches
        for v in g:
            v.setColor('white')
    visit(s)

def dfs_all(g, pre, post=ignore):
    def visit(n):
        n.setColor('gray')
        pre(n)
        for v in n.adj:
            if v.getColor() == 'white':
                visit(v)
        post(n)
    for v in g:
        v.setColor('white')
    for v in g:
        if v.getColor() == 'white':
            visit(v)
def printMe(v):
    print v.id
