outputtemplate := "%j-%c.mps"; input TEX; nodescale := 11pt; def node(expr i,e,l) = begingroup path p; p := fullcircle scaled nodescale shifted z[i]; fill p withcolor white; draw p; label(decimal i infont "cmr8", z[i]); if e >= 0: label.top(decimal e, z[i] + nodescale/2 * dir 90) withcolor 0.7green; fi if l >= 0: label.bot(decimal l, z[i] + nodescale/2 * dir -90) withcolor red; fi endgroup enddef; def tofrom(expr i,j) = (z[i]+nodescale/2*dir angle(z[j]-z[i]))--(z[j]+nodescale/2*dir angle(z[i]-z[j])) enddef; def critical(expr i,j) = begingroup pickup pencircle scaled 6pt xscaled 0.08 rotated angle(z[j] - z[i]); draw tofrom(i,j) withcolor red+green; pickup defaultpen; endgroup enddef; def float(expr i,j,f) = begingroup picture lab; lab := thelabel(decimal f, (0,0)); theta := angle(z[j] - z[i]); pair corner; if theta <= -90: corner := lrcorner lab; elseif theta <= 0: corner := urcorner lab; elseif theta <= 90: corner := ulcorner lab; else: corner := llcorner lab; fi pair newcenter, newcorner; newcenter = 0.5[z[i],z[j]] + whatever * dir(theta - 90); newcorner = (z[i] + (3pt) * dir(theta - 90)) + whatever * dir theta; newcorner - newcenter = corner; draw lab shifted newcenter withcolor blue; endgroup enddef; def activity(expr i,j,lbl,f) = begingroup drawarrow tofrom(i,j); picture lab; lab := thelabel.top(TEX(lbl), (0, 0)); draw lab scaled 0.8 rotated angle(z[j] - z[i]) shifted 0.5[z[i],z[j]]; if f >= 0: float(i,j,f); fi endgroup enddef; def dummy(expr i,j,f) = begingroup drawarrow tofrom(i,j) dashed evenly; if f >= 0: float(i,j,f); fi endgroup enddef; beginfig(1); ux := 2cm; uy := 2cm; z0 = (0,uy); z1 = (0.9ux,2uy); z2 = (0.9ux,0); z3 = (2ux,2uy); z4 = (1.8ux,uy); z5 = (3.3ux,0); z6 = (2.7ux,2uy); z7 = (3.8ux,2uy); z8 = (3.3ux,uy); z9 = (5.4ux,2uy); z10 = (4.6ux,uy); z11 = (5.7ux,uy); z12 = (6.4ux,uy); critical(0,2); critical(2,4); critical(4,6); critical(6,7); critical(7,10); critical(10,11); critical(11,12); node(0,0,0); node(1,2,4); node(2,6,6); node(3,6,8); node(4,8,8); node(5,10,11); node(6,8,8); node(7,11,11); node(8,9,11); node(9,14,15); node(10,11,11); node(11,15,15); node(12,15,15); activity(0,1,"A:\thinspace2",2); activity(0,2,"B:\thinspace$[3,6]$ \$180",0); activity(1,3,"C:\thinspace$[2,4]$ \$150",2); activity(2,4,"D:\thinspace$[1,2]$ \$200",0); activity(2,5,"E:\thinspace$[1,4]$ \$75",1); activity(6,7,"F:\thinspace$[1,3]$ \$250",0); activity(4,8,"G:\thinspace1",2); activity(7,9,"H:\thinspace$[2,3]$ \$100",1); activity(10,11,"I:\thinspace$[1,4]$ \$140",0); dummy(3,6,2); dummy(4,6,0); dummy(5,10,1); dummy(7,10,0); dummy(8,10,2); dummy(9,12,1); dummy(11,12,0); endfig; beginfig(2); ux := 1.2cm; uy := 2cm; z0 = (0,uy); z1 = (ux,uy); z2 = (2ux,2uy); z3 = (2.7ux,0); z4 = (5ux,2uy); z5 = (3ux,uy); z6 = (4.8ux,uy); z7 = (4.8ux,0); z8 = (5.3ux,0.5uy); z9 = (7.1ux,0.5uy); z10 = (7.3ux,uy); z11 = (8.3ux,2uy); z12 = (8.3ux,0); z13 = (9ux,uy); z14 = (10.1ux,0); z15 = (9.5ux,1.5uy); z16 = (10.5ux,1.5uy); z17 = (11ux,0.75uy); for i=0 upto 17: node(i,-1,-1); endfor activity(0,1,"A:\thinspace2",-1); activity(1,2,"B:\thinspace$[1,2]$ \$300",-1); activity(1,3,"C:\thinspace$[2,3]$ \$250",-1); activity(2,4,"D:\thinspace7",-1); activity(2,5,"E:\thinspace$[1,2]$ \$700",-1); activity(5,6,"F:\thinspace$[2,3]$ \$350",-1); activity(3,7,"G:\thinspace$[3,5]$ \$125",-1); activity(8,9,"H:\thinspace$[5,8]$ \$150",-1); activity(10,11,"I:\thinspace$[4,5]$ \$250",-1); activity(10,12,"J:\thinspace$[3,5]$ \$300",-1); activity(12,13,"K:\thinspace2",-1); activity(12,14,"L:\thinspace$[4,7]$ \$200",-1); activity(15,16,"M:\thinspace2",-1); dummy(6,8,-1); dummy(7,8,-1); dummy(4,10,-1); dummy(9,10,-1); dummy(11,15,-1); dummy(13,15,-1); dummy(14,17,-1); dummy(16,17,-1); endfig; bye