#!/usr/bin/env python owns = {} overall = {} minions = [] overlords = [] def prop(overlord,node,indent): print indent+node overall[node] = overlord for m in owns[node]: prop(overlord,m,indent+' ') for l in open('tree.in'): a,b = [x.strip() for x in l.split(',')] if a not in owns: owns[a] = [] minions.append(a) if b is not None and b != '': if b not in owns: owns[b] = [] owns[b].append( a ) else: overlords.append(a) print overlords print minions print owns for o in overlords: prop(o,o,'') print print 'minion,overlord' for m in minions: print '%s,%s' % (m,overall[m])