- /**
- *
- */
- package com.eshore.sweetop.mapbase;
- import java.awt.Color;
- import java.util.LinkedList;
- /**
- * Class TopoLogical
- * @author wudongdong
- * TopoLogical.java
- * Dec 5, 2008
- */
- public class TopoLogical {
- private static int time;
- public static LinkedList<Vertex> sort(Graphics g){
- LinkedList<Vertex> list=new LinkedList<Vertex>();
- for (Vertex u : g) {
- u.setColor(Color.WHITE);
- u.setParent(null);
- time=0;
- }
- for (Vertex u : g) {
- if(u.getColor().equals(Color.WHITE)){
- DFSVist(u,list);
- }
- }
- return list;
- }
- private static void DFSVist(Vertex u,LinkedList<Vertex> list) {
- u.setColor(Color.GRAY);
- time++;
- u.setD(time);
- for (Vertex v : u.getList()) {
- 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 static void main(String[] args) {
- Vertex s1 = new Vertex(1);
- Vertex s2 = new Vertex(2);
- Vertex s3 = new Vertex(3);
- Vertex s4 = new Vertex(4);
- Vertex s5 = new Vertex(5);
- s1.getList().add(s2);
- s1.getList().add(s5);
- s2.getList().add(s1);
- s2.getList().add(s3);
- s2.getList().add(s4);
- s2.getList().add(s5);
- s3.getList().add(s2);
- s3.getList().add(s4);
- s4.getList().add(s2);
- s4.getList().add(s5);
- s4.getList().add(s3);
- s5.getList().add(s4);
- s5.getList().add(s1);
- s5.getList().add(s2);
- Graphics g = new Graphics(s1, s2, s3, s4, s5);
- LinkedList<Vertex> list=TopoLogical.sort(g);
- for (Vertex v : list) {
- System.out.println(v.getId()+":"+v.getF());
- }
- }
- }
图算法之拓扑排序
最新推荐文章于 2023-05-19 21:45:00 发布