//Name, Matrikelnummer #include using namespace leda; using namespace std; GRAPH G; node s = nil; node t = nil; void run_maxflow(GraphWin& gw) { edge e; edge_map f(G,0); //... forall_edges(e,G) gw.set_user_label(e,leda::string("%d",f[e]) + "/" + leda::string("%d",G[e])); } void init_edge(GraphWin& gw, edge e) { G[e] = rand_int(0,99); gw.set_slider_value(e,G[e]/100.0,0); } void init_handler(GraphWin& gw) { edge e; forall_edges(e,G) { init_edge(gw,e); } if(s==nil){ s = G.choose_node(); gw.set_label_type(s,user_label); gw.set_user_label(s,"s"); gw.set_shape(s,square_node); gw.set_width(s,20); gw.set_color(s,blue); } else if(gw.get_user_label(s)!="s"){ s = G.choose_node(); gw.set_label_type(s,user_label); gw.set_user_label(s,"s"); gw.set_shape(s,square_node); gw.set_width(s,20); gw.set_color(s,blue); } if(t==nil){ t = G.choose_node(); gw.set_label_type(t,user_label); gw.set_user_label(t,"t"); gw.set_shape(t,square_node); gw.set_width(t,20); gw.set_color(t,red); } else if(gw.get_user_label(t)!="t"){ t = G.choose_node(); gw.set_label_type(t,user_label); gw.set_user_label(t,"t"); gw.set_shape(t,square_node); gw.set_width(t,20); gw.set_color(t,red); } run_maxflow(gw); } void new_edge_handler(GraphWin& gw, edge e) { init_edge(gw,e); run_maxflow(gw); } void new_node_handler(GraphWin& gw, node v) { if(G.number_of_nodes() == 1) { s=v; gw.set_label_type(v,user_label); gw.set_user_label(v,"s"); gw.set_shape(v,square_node); gw.set_width(v,20); gw.set_color(v,blue); } if(G.number_of_nodes() == 2) { t=v; gw.set_label_type(v,user_label); gw.set_user_label(v,"t"); gw.set_shape(v,square_node); gw.set_width(v,20); gw.set_color(v,red); } run_maxflow(gw); } bool pre_del_node_handler(GraphWin& gw, node v) { if(G.number_of_nodes() > 2) { if(v == s) { s = G.choose_node(); while(s == v) s = G.choose_node(); gw.set_label_type(s,user_label); gw.set_user_label(s,"s"); gw.set_shape(s,square_node); gw.set_width(s,20); gw.set_color(s,blue); } if(v == t) { while(t == v) t = G.choose_node(); gw.set_label_type(t,user_label); gw.set_user_label(t,"t"); gw.set_shape(t,square_node); gw.set_width(t,20); gw.set_color(t,red); } } return true; } void del_node_handler(GraphWin& gw) { run_maxflow(gw); } void edge_slider_handler(GraphWin& gw, edge e, double f) { G[e] = static_cast(100*f); run_maxflow(gw); } int main() { GraphWin gw(G); cout<< "hallo"; gw.set_node_label_type(no_label); gw.set_edge_label_type(user_label); gw.set_directed(true); gw.set_node_width(10); gw.set_init_graph_handler(init_handler); gw.set_new_edge_handler(new_edge_handler); gw.set_new_node_handler(new_node_handler); gw.set_del_edge_handler(run_maxflow); gw.set_del_node_handler(pre_del_node_handler); gw.set_del_node_handler(del_node_handler); gw.set_edge_slider_handler(edge_slider_handler); gw.display(); gw.edit(); }