package basic.graph;import java.util.HashMap;import java.util.HashSet;/*** 自定义图的信息* <p>* 微信公众号:Java和算法学习** @author 周一*/public class Graph {/*** 点集,Key:用户给的点,Value:自定义点信息*/public HashMap<Integer, Node> nodes;/*** 边集*/public HashSet<Edge> edges;public Graph() {this.nodes = new HashMap<>();this.edges = new HashSet<>();}/*** 将用户输入的表示边的 N*3 的矩阵转换为自定义的图** @param matrix N*3 的矩阵,[3, 0, 5], [2, 2, 5]*/public static Graph createGraph(int[][] matrix) {Graph graph = new Graph();for (int[] m : matrix) {// 拿到用户给的边的权重信息、边的from、to节点int weight = m[0];int from = m[1];int to = m[2];// 添加图的点集信息if (!graph.nodes.containsKey(from)) {graph.nodes.put(from, new Node(from));}if (!graph.nodes.containsKey(to)) {graph.nodes.put(to, new Node(to));}// 根据点生成边的信息Node fromNode = graph.nodes.get(from);Node toNode = graph.nodes.get(to);Edge edge = new Edge(weight, fromNode, toNode);// 节点信息处理// 添加 从当前节点出发直接连接的节点、从当前节点出发直接连接的边fromNode.nexts.add(toNode);fromNode.edges.add(edge);// 入度、出度修改fromNode.out++;toNode.in++;// 添加图的边集信息graph.edges.add(edge);}return graph;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。