spfa模板(链式前向星,bfs,判环)
2018-04-03 16:46
465 查看
说起来我该印一份自己的模板了。
public class Main { static Set<Integer> visited = new HashSet<>(); static Edge[] edges = new Edge[1005]; static int[] head = new int[1005]; static int[] dis = new int[1005]; static int[] judege = new int[1005];//记录入队次数 static final int maxIn = 998;//最大入队次数,看情况 public static void main(String[] args) { Scanner reader = new Scanner(System.in); // InputReader reader = new InputReader(); // PrintWriter out = new PrintWriter(System.out); int t = reader.nextInt(); int n = reader.nextInt(); int index = 0; Arrays.fill(head, -1); Arrays.fill(dis, Integer.MAX_VALUE); for (int i = 0; i < n; i++) { int f 4000 rom = reader.nextInt(); int to = reader.nextInt(); int val = reader.nextInt(); edges[index] = new Edge(to, val, head[from]); head[from] = index++; } spfa(1); System.out.println(dis ); } public static void spfa(int s) { Queue<Integer> wait = new LinkedList<>(); wait.add(s); visited.add(s); dis[s] = 0; while (!wait.isEmpty()) { int get = wait.poll(); for (int i = head[get]; i != -1; i = edges[i].next) { int road = dis[get] + edges[i].val; if (road < dis[edges[i].to]) { dis[edges[i].to] = road; if (visited.add(edges[i].to)) { wait.add(edges[i].to); judege[get]++; if(judege[get]>maxIn) { //有负环,处理 return; } } } } } } } class Edge { int to; int val; int next; public Edge(int to, int val, int next) { this.to = to; this.val = val; this.next = next; } }
相关文章推荐
- 单元最短路径算法模板汇总(Dijkstra, BF,SPFA),附链式前向星模板
- 最短路 SPFA 判断负环 静态邻接表(链式前向星) HDU 2544 最短路 POJ 3259 Wormholes
- 蓝桥杯 算法训练 最短路 (链式前向星,spfa)
- 链式前向星存储实现BFS
- [POJ 1511]Invitation Cards[链式前向星][SPFA]
- HDU 2544 最短路(Floyd + Dijkstra + SPFA + 使用链式前向星优化的SPFA + 浅谈最短路)
- 中国大学MOOC-陈越、何钦铭-数据结构:06-图3 六度空间(链式前向星、BFS)
- hdu 1874 单源最短路径spfa+链式前向星
- acm模板:bfs和spfa最短路算法的区别,细节
- zzuli 2130 hipercijevi bfs + 链式前向星 + 输入外挂
- HDU 1535 Invitation Cards 【SPFA + 链式前向星】
- NYOJ 115 城市平乱 【无向图 + 链式前向星 + SPFA】
- hdu3879及ISAP模板(链式前向星)
- 最短路 spfa 算法 && 链式前向星存图
- 链式前向星模板
- 比较重量(华为面试题改)链式前向星的使用+bfs
- 拓扑排序模板--链式前向星
- HDU 1535 Invitation Cards (spfa, 链式前向星,逆向建图)
- BFS与反向BFS,链式前向星与反向建边
- DFS和BFS链式前向星的实现