- package om.eshore.sweetop.minpath;
- import java.awt.Color;
- import java.util.LinkedList;
- public class Dag extends Graphics {
- private int time = 0;
- public Dag(Vertex... vs) {
- for (Vertex v : vs) {
- list.add(v);
- }
- }
- public void sort() {
- LinkedList<Vertex> list = new LinkedList<Vertex>();
- for (Vertex u : this.list) {
- u.setColor(Color.WHITE);
- // u.setParent(null);
- }
- time = 0;
- for (Vertex u : this.list) {
- if (u.getColor().equals(Color.WHITE)) {
- DFSVist(u, list);
- }
- }
- this.list = list;
- }
- private void DFSVist(Vertex u, LinkedList<Vertex> list) {
- u.setColor(Color.GRAY);
- // time++;
- // u.setDepth(time);
- for (Vertex v : u.getV()) {
- if (v.getColor().equals(Color.WHITE)) {
- // v.setParent(u);
- DFSVist(v, list);
- }
- }
- u.setColor(Color.BLACK);
- list.add(0, u);
- // time++;
- // u.setF(time);
- }
- public boolean minPath(Vertex v) {
- sort();
- initSingleSource(v);
- boolean start = false;
- for (Vertex u : list) {
- if (u == v) {
- start = true;
- }
- if (start) {
- for (Vertex x : u.getV()) {
- relax(u, x);
- }
- }
- }
- return true;
- }
- }
单源最短路径(三)————Dag实现
最新推荐文章于 2021-12-07 22:15:45 发布