单源最短路径(三)————Dag实现

本文介绍了一种基于有向无环图(DAG)的最短路径算法实现,该算法首先进行拓扑排序,然后从指定起点计算到图中所有其他顶点的最短路径。代码使用了Java语言,并借助了LinkedList数据结构来存储顶点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. packageom.eshore.sweetop.minpath;
  2. importjava.awt.Color;
  3. importjava.util.LinkedList;
  4. publicclassDagextendsGraphics{
  5. privateinttime=0;
  6. publicDag(Vertex...vs){
  7. for(Vertexv:vs){
  8. list.add(v);
  9. }
  10. }
  11. publicvoidsort(){
  12. LinkedList<Vertex>list=newLinkedList<Vertex>();
  13. for(Vertexu:this.list){
  14. u.setColor(Color.WHITE);
  15. //u.setParent(null);
  16. }
  17. time=0;
  18. for(Vertexu:this.list){
  19. if(u.getColor().equals(Color.WHITE)){
  20. DFSVist(u,list);
  21. }
  22. }
  23. this.list=list;
  24. }
  25. privatevoidDFSVist(Vertexu,LinkedList<Vertex>list){
  26. u.setColor(Color.GRAY);
  27. //time++;
  28. //u.setDepth(time);
  29. for(Vertexv:u.getV()){
  30. if(v.getColor().equals(Color.WHITE)){
  31. //v.setParent(u);
  32. DFSVist(v,list);
  33. }
  34. }
  35. u.setColor(Color.BLACK);
  36. list.add(0,u);
  37. //time++;
  38. //u.setF(time);
  39. }
  40. publicbooleanminPath(Vertexv){
  41. sort();
  42. initSingleSource(v);
  43. booleanstart=false;
  44. for(Vertexu:list){
  45. if(u==v){
  46. start=true;
  47. }
  48. if(start){
  49. for(Vertexx:u.getV()){
  50. relax(u,x);
  51. }
  52. }
  53. }
  54. returntrue;
  55. }
  56. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值