博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
寻找最短路径BFS
阅读量:4215 次
发布时间:2019-05-26

本文共 1708 字,大约阅读时间需要 5 分钟。

package Graph;  
import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util.Stack;
import csp2014_9_4.Main;
public class BreadThFirstSearch { boolean []visit; LinkedList
[]map; int[]path; int[]dist; int v, e, s; public static void main(String[] args) {  new BreadThFirstSearch().run();//注意 类要匹配。。。 } public void run() {  Scanner in = new Scanner(System.in);  v = in.nextInt();  e = in.nextInt();  map = new LinkedList[v];//搜素之前就要创建  for(int i = 0; i < v; i++ ) {   map[i] = new LinkedList<>();  }  
  for(int i = 0; i < e; i++ ) {   int a = in.nextInt();   int b = in.nextInt();   map[a].offer(b);   map[b].offer(a);  }  BreadFirst();  for(int i = 0; i < v; i++ ) {   if(visit[i]) {    System.out.println("distance = " + dist[i]);    printPath(i);   }   System.out.println();  }   } public void BreadFirst() {  visit = new boolean[v];  path = new int[v];  dist = new int[v];  s = 1;  bfs(s); } public void bfs(int s) {  Queue
que = new LinkedList<>();  que.offer(s);  visit[s] = true;  while(!que.isEmpty()) {   int cur = que.poll();   for(int i = 0; i < map[cur].size(); i++ ) {    int w = map[cur].get(i);    if(!visit[w]) {     dist[w] = dist[cur] + 1;     visit[w] = true;     path[w] = cur;     que.offer(w);    }   }     }   } public void printPath(int v) {  if(!visit[v])   return ;  if(v == s) {   System.out.print(v);   return;  }  printPath(path[v]);  System.out.print("-" + v); }  public Iterable
printPathSec(int v){  if(!visit[v])   return null;  Stack
stack = new Stack<>();    for(int x = v; x != s; x = path[x])   stack.push(x);  stack.push(s);  return stack;   }}

转载地址:http://klimi.baihongyu.com/

你可能感兴趣的文章
测试工具厂商的编程语言什么时候“退休”?
查看>>
资源监控工具 - Hyperic HQ
查看>>
LoadRunner中Concurrent与Simultaneous的区别
查看>>
SiteScope - Agentless监控
查看>>
为什么我们的自动化测试“要”这么难
查看>>
LoadRunner性能脚本开发实战训练
查看>>
测试之途,前途?钱途?图何?
查看>>
反病毒专家谈虚拟机技术 面临两大技术难题
查看>>
几种典型的反病毒技术:特征码技术、覆盖法技术等
查看>>
论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取
查看>>
廖雪峰Python教程 学习笔记3 hello.py
查看>>
从内核看epoll的实现(基于5.9.9)
查看>>
python与正则表达式
查看>>
安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法
查看>>
input type=“button“与input type=“submit“的区别
查看>>
Linux文件和设备编程
查看>>
文件描述符
查看>>
终端驱动程序:几个简单例子
查看>>
HTML条件注释
查看>>
内核态与用户态
查看>>