亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? path.java

?? 這是一本非常經(jīng)典的數(shù)據(jù)結(jié)構(gòu)教材,這是一本非常經(jīng)典的數(shù)據(jù)結(jié)構(gòu)教材
?? JAVA
字號:
// path.java
// demonstrates shortest path with weighted, directed graphs
// to run this program: C>java PathApp
////////////////////////////////////////////////////////////////
class DistPar             // distance and parent
   {                      // items stored in sPath array
   public int distance;   // distance from start to this vertex
   public int parentVert; // current parent of this vertex
// -------------------------------------------------------------
   public DistPar(int pv, int d)  // constructor
      {
      distance = d;
      parentVert = pv;
      }
// -------------------------------------------------------------
   }  // end class DistPar
///////////////////////////////////////////////////////////////
class Vertex
   {
   public char label;        // label (e.g. 'A')
   public boolean isInTree;
// -------------------------------------------------------------
   public Vertex(char lab)   // constructor
      {
      label = lab;
      isInTree = false;
      }
// -------------------------------------------------------------
   }  // end class Vertex
////////////////////////////////////////////////////////////////
class Graph
   {
   private final int MAX_VERTS = 20;
   private final int INFINITY = 1000000;
   private Vertex vertexList[]; // list of vertices
   private int adjMat[][];      // adjacency matrix
   private int nVerts;          // current number of vertices
   private int nTree;           // number of verts in tree
   private DistPar sPath[];     // array for shortest-path data
   private int currentVert;     // current vertex
   private int startToCurrent;  // distance to currentVert
// -------------------------------------------------------------
   public Graph()               // constructor
      {
      vertexList = new Vertex[MAX_VERTS];
                                         // adjacency matrix
      adjMat = new int[MAX_VERTS][MAX_VERTS];
      nVerts = 0;
      nTree = 0;
      for(int j=0; j<MAX_VERTS; j++)     // set adjacency
         for(int k=0; k<MAX_VERTS; k++)  //     matrix
            adjMat[j][k] = INFINITY;     //     to infinity
      sPath = new DistPar[MAX_VERTS];    // shortest paths
      }  // end constructor
// -------------------------------------------------------------
   public void addVertex(char lab)
      {
      vertexList[nVerts++] = new Vertex(lab);
      }
// -------------------------------------------------------------
   public void addEdge(int start, int end, int weight)
      {
      adjMat[start][end] = weight;  // (directed)
      }
// -------------------------------------------------------------
   public void path()                // find all shortest paths
      {
      int startTree = 0;             // start at vertex 0
      vertexList[startTree].isInTree = true;
      nTree = 1;                     // put it in tree

      // transfer row of distances from adjMat to sPath
      for(int j=0; j<nVerts; j++)
         {
         int tempDist = adjMat[startTree][j];
         sPath[j] = new DistPar(startTree, tempDist);
         }

      // until all vertices are in the tree
      while(nTree < nVerts)
         {
         int indexMin = getMin();    // get minimum from sPath
         int minDist = sPath[indexMin].distance;

         if(minDist == INFINITY)     // if all infinite
            {                        // or in tree,
            System.out.println("There are unreachable vertices");
            break;                   // sPath is complete
            }
         else
            {                        // reset currentVert
            currentVert = indexMin;  // to closest vert
            startToCurrent = sPath[indexMin].distance;
            // minimum distance from startTree is
            // to currentVert, and is startToCurrent
            }
         // put current vertex in tree
         vertexList[currentVert].isInTree = true;
         nTree++;
         adjust_sPath();             // update sPath[] array
         }  // end while(nTree<nVerts)

      displayPaths();                // display sPath[] contents

      nTree = 0;                     // clear tree
      for(int j=0; j<nVerts; j++)
         vertexList[j].isInTree = false;
      }  // end path()
// -------------------------------------------------------------
   public int getMin()               // get entry from sPath
      {                              //    with minimum distance
      int minDist = INFINITY;        // assume minimum
      int indexMin = 0;
      for(int j=1; j<nVerts; j++)    // for each vertex,
         {                           // if it's in tree and
         if( !vertexList[j].isInTree &&  // smaller than old one
                               sPath[j].distance < minDist )
            {
            minDist = sPath[j].distance;
            indexMin = j;            // update minimum
            }
         }  // end for
      return indexMin;               // return index of minimum
      }  // end getMin()
// -------------------------------------------------------------
   public void adjust_sPath()
      {
      // adjust values in shortest-path array sPath
      int column = 1;                // skip starting vertex
      while(column < nVerts)         // go across columns
         {
         // if this column's vertex already in tree, skip it
         if( vertexList[column].isInTree )
            {
            column++;
            continue;
            }
         // calculate distance for one sPath entry
                       // get edge from currentVert to column
         int currentToFringe = adjMat[currentVert][column];
                       // add distance from start
         int startToFringe = startToCurrent + currentToFringe;
                       // get distance of current sPath entry
         int sPathDist = sPath[column].distance;

         // compare distance from start with sPath entry
         if(startToFringe < sPathDist)   // if shorter,
            {                            // update sPath
            sPath[column].parentVert = currentVert;
            sPath[column].distance = startToFringe;
            }
         column++;
         }  // end while(column < nVerts)
   }  // end adjust_sPath()
// -------------------------------------------------------------
   public void displayPaths()
      {
      for(int j=0; j<nVerts; j++) // display contents of sPath[]
         {
         System.out.print(vertexList[j].label + "="); // B=
         if(sPath[j].distance == INFINITY)
            System.out.print("inf");                  // inf
         else
            System.out.print(sPath[j].distance);      // 50
         char parent = vertexList[ sPath[j].parentVert ].label;
         System.out.print("(" + parent + ") ");       // (A)
         }
      System.out.println("");
      }
// -------------------------------------------------------------
   }  // end class Graph
////////////////////////////////////////////////////////////////
class PathApp
   {
   public static void main(String[] args)
      {
      Graph theGraph = new Graph();
      theGraph.addVertex('A');     // 0  (start)
      theGraph.addVertex('B');     // 1
      theGraph.addVertex('C');     // 2
      theGraph.addVertex('D');     // 3
      theGraph.addVertex('E');     // 4

      theGraph.addEdge(0, 1, 50);  // AB 50
      theGraph.addEdge(0, 3, 80);  // AD 80
      theGraph.addEdge(1, 2, 60);  // BC 60
      theGraph.addEdge(1, 3, 90);  // BD 90
      theGraph.addEdge(2, 4, 40);  // CE 40
      theGraph.addEdge(3, 2, 20);  // DC 20
      theGraph.addEdge(3, 4, 70);  // DE 70
      theGraph.addEdge(4, 1, 50);  // EB 50

      System.out.println("Shortest paths");
      theGraph.path();             // shortest paths
      System.out.println();
      }  // end main()
   }  // end class PathApp
////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一级在线播放| 678五月天丁香亚洲综合网| 久久精品一区四区| 国产成人综合在线播放| 久久久久久免费网| 成人在线综合网| 亚洲人123区| 欧美性色黄大片手机版| 婷婷综合在线观看| 欧美精品一区二区久久婷婷 | 日韩欧美一区在线| 美国十次了思思久久精品导航| 91精品国产色综合久久不卡电影 | 午夜不卡在线视频| 精品久久久久久亚洲综合网| 国产老肥熟一区二区三区| 中文字幕第一页久久| 91久久精品一区二区三区| 日韩av不卡一区二区| 国产日韩影视精品| 在线视频欧美精品| 久久成人久久爱| 国产精品久久久久久久久免费桃花| 99久久精品国产观看| 日韩高清一区在线| 国产精品三级视频| 欧美日韩免费在线视频| 国产一区欧美二区| 亚洲国产精品久久艾草纯爱| 欧美精品一区二区三区四区| 色猫猫国产区一区二在线视频| 免费成人在线影院| 亚洲精品v日韩精品| 欧美成人一区二区三区片免费| www.亚洲精品| 久久精品99国产精品| 亚洲天堂2014| 久久久久免费观看| 欧美日韩一级黄| 国产成人av资源| 欧美aaaaaa午夜精品| 18欧美亚洲精品| 欧美电影免费观看高清完整版在 | 日韩欧美一区二区久久婷婷| 91丝袜呻吟高潮美腿白嫩在线观看| 免费成人美女在线观看| 亚洲欧美日韩在线播放| 久久久久久久综合日本| 7777精品伊人久久久大香线蕉的| 成人免费视频视频在线观看免费| 蜜臀久久99精品久久久久宅男| 亚洲美女偷拍久久| 欧美激情在线一区二区三区| 欧美日本不卡视频| 日本韩国欧美国产| 波多野结衣中文一区| 久久国产精品99久久久久久老狼| 一区二区三区欧美日韩| 中文字幕在线观看一区| 久久精品日韩一区二区三区| 日韩美女在线视频| 91麻豆精品国产91久久久资源速度| 99精品1区2区| 99久久国产综合精品色伊| 国产精品综合久久| 国产精品资源在线看| 久久精品噜噜噜成人88aⅴ| 日韩中文字幕av电影| 亚洲午夜精品一区二区三区他趣| 国产精品国产三级国产aⅴ入口 | 国产精品久久免费看| 国产亚洲一区二区三区在线观看| 欧美一区二区国产| 日韩免费看的电影| 欧美一区二区在线不卡| 在线播放亚洲一区| 91麻豆精品国产综合久久久久久| 欧美精品视频www在线观看| 欧美日本一道本在线视频| 欧美日韩不卡在线| 7777精品久久久大香线蕉| 精品视频在线视频| 3atv一区二区三区| 日韩精品一区在线观看| 日韩视频免费直播| 久久久午夜电影| 国产精品久久久一本精品| 国产精品卡一卡二卡三| 亚洲色图另类专区| 夜夜嗨av一区二区三区中文字幕 | 午夜电影一区二区| 久久99精品久久只有精品| 久久精品国产久精国产| 国产伦精品一区二区三区在线观看| 国产激情精品久久久第一区二区 | 国产一区二区电影| 成人激情综合网站| 欧美无乱码久久久免费午夜一区| 欧美男人的天堂一二区| 欧美成人一级视频| 中文字幕在线观看一区二区| 亚洲激情网站免费观看| 日韩精品国产欧美| 国产91综合网| 91婷婷韩国欧美一区二区| 欧美日韩精品高清| 久久久亚洲午夜电影| 亚洲欧美日韩综合aⅴ视频| 天天综合网天天综合色| 国产一区二区三区精品欧美日韩一区二区三区 | 视频精品一区二区| 国产毛片精品一区| 欧美在线你懂得| 久久夜色精品国产噜噜av| 亚洲国产精品传媒在线观看| 一区二区三区四区激情| 久久精品理论片| 色综合久久中文综合久久97| 在线电影院国产精品| 日本一区二区三区高清不卡| 亚洲一区二区三区不卡国产欧美| 久久成人麻豆午夜电影| 91麻豆免费看| 精品精品国产高清一毛片一天堂| 国产精品免费丝袜| 毛片av一区二区| 日本韩国欧美一区| 国产午夜精品一区二区三区视频| 玉足女爽爽91| 国产91在线|亚洲| 日韩欧美www| 亚洲福中文字幕伊人影院| 丁香激情综合五月| 日韩免费一区二区| 亚洲国产精品久久久久婷婷884| 国产成人精品亚洲午夜麻豆| 欧美美女视频在线观看| 亚洲欧洲国产专区| 国产一区二区三区av电影 | 91精品国产乱码久久蜜臀| 国产精品欧美一区喷水| 久久91精品久久久久久秒播| 欧美性受极品xxxx喷水| 中文字幕在线视频一区| 国产成人日日夜夜| 精品国产麻豆免费人成网站| 亚洲一二三四久久| 色综合网站在线| 中文字幕成人av| 国产乱码一区二区三区| 欧美www视频| 蜜桃在线一区二区三区| 欧美老人xxxx18| 亚洲无人区一区| 色综合久久天天| 亚洲日穴在线视频| av在线不卡网| 亚洲欧洲国产日韩| jizzjizzjizz欧美| 国产精品视频线看| 成人免费观看视频| 国产精品污www在线观看| 国产麻豆视频一区| 国产调教视频一区| 国产盗摄女厕一区二区三区| 久久久久久一二三区| 国产精品一区二区免费不卡| 久久精品亚洲麻豆av一区二区 | 成人av网站在线观看| 国产视频视频一区| 成人av网址在线| 亚洲欧美色一区| 欧美亚洲禁片免费| 日本成人超碰在线观看| 欧美一级在线免费| 激情五月婷婷综合| 久久久精品日韩欧美| 高清视频一区二区| 亚洲视频免费看| 色婷婷综合视频在线观看| 一区二区三区在线看| 欧美视频你懂的| 秋霞电影网一区二区| 26uuu国产在线精品一区二区| 国产尤物一区二区| 国产精品久久综合| 欧美综合在线视频| 蜜桃久久av一区| 国产无人区一区二区三区| 成人app下载| 亚洲国产欧美在线| 精品毛片乱码1区2区3区| 国内精品久久久久影院薰衣草 | 91一区二区三区在线播放| 亚洲激情成人在线| 日韩免费电影网站| 91欧美一区二区| 日本女人一区二区三区| 国产日韩精品一区二区浪潮av| 97精品国产露脸对白|