spanning.c
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:2k
开发平台:

MultiPlatform

  1. #include <LEDA/graph.h>
  2. #include <LEDA/graph_alg.h>
  3. main(int argc, char** argv)
  4. {
  5. GRAPH<int,int>  G;
  6. cmdline_graph(G,argc,argv);
  7. edge x;
  8. forall_edges(x,G) G[x] = rand_int(0,1000000);
  9. edge_array<int>     cost1(G);
  10. edge_array<double>  cost2(G);
  11. forall_edges(x,G) cost2[x] = cost1[x] = G[x];
  12. list<edge> el;
  13. float T;
  14. cout << "SPANNING_TREE:             ";
  15. cout.flush();
  16. T = used_time();
  17. el = SPANNING_TREE(G);
  18. cout << string(" %5.2f sec   |T| = %d",used_time(T),el.length());
  19. newline;
  20. if (Yes("Print tree edges ? ")) 
  21.  forall(x,el) { G.print_edge(x); newline; }
  22. el.clear();
  23. cout << "MIN_SPANNING_TREE(int):    ";
  24. cout.flush();
  25. T = used_time();
  26. el = MIN_SPANNING_TREE(G,cost1);
  27. cout << string(" %5.2f sec   |T| = %d",used_time(T),el.length());
  28. int total1 = 0;
  29. forall(x,el)  total1 += cost1[x];
  30. cout << string("   total cost %dn",total1);
  31. if (Yes("Print tree edges ? ")) 
  32.  forall(x,el) { G.print_edge(x); newline; }
  33. el.clear();
  34. cout << "MIN_SPANNING_TREE(ugraph): ";
  35. cout.flush();
  36. T = used_time();
  37. el = MIN_SPANNING_TREE(G,cost1);
  38. cout << string(" %5.2f sec   |T| = %d",used_time(T),el.length());
  39. total1 = 0;
  40. forall(x,el)  total1 += cost1[x];
  41. cout << string("   total cost %dn",total1);
  42. if (Yes("Print tree edges ? ")) 
  43.  forall(x,el) { G.print_edge(x); newline; }
  44. cout << "MIN_SPANNING_TREE(double): ";
  45. cout.flush();
  46. T = used_time();
  47. el = MIN_SPANNING_TREE(G,cost2);
  48. cout << string(" %5.2f sec   |T| = %d",used_time(T),el.length());
  49. double total2 = 0;
  50. forall(x,el)  total2 += cost2[x];
  51. cout << string("   total cost %fn",total2);
  52. if (Yes("Print tree edges ? ")) 
  53.  forall(x,el) { G.print_edge(x); newline; }
  54. return 0;
  55. }