Day587.图 -数据结构和算法Java
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day587.图 -数据结构和算法Java相关的知识,希望对你有一定的参考价值。
图
一、介绍
二、基本概念
三、图的表示方式
四、代码案例
- 需求
- 代码实现
package com.achang.graph;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 图结构
*/
public class Graph
//存储顶点集合
private List<String> vertexList;
//矩阵,存储图结构对应的领接矩阵
private int[][] edges;
//表示当前有多少条边
private int numOfEdges;
/**
* 构造器
*
* @param n 顶点数量
*/
public Graph(int n)
edges = new int[n][n];
vertexList = new ArrayList<>(n);
numOfEdges = 0;
//返回v1和v2的权值
public int getWeight(int v1,int v2)
return edges[v1][v2];
//显示矩阵
public void showVertex()
for (int[] edge : edges)
System.out.println(Arrays.toString(edge));
//返回节点i对应的值 0->A
public String getValueByIndex(int i)
return vertexList.get(i);
//返回节点的个数
public int getVertexSize()
return vertexList.size();
//得到边的数目
public int getNumOfEdges()
return numOfEdges;
//插入顶点
public void addVertex(String vertex)
vertexList.add(vertex);
/**
* 添加边
* @param v1 表示点的下标及第几个节点 比如ABCDE,A->0 B->1 C->2 D->3 E->4
* @param v2 如上
* @param weight 权值 1或者0 默认为0
*/
public void addEdge(int v1, int v2, int weight)
edges[v1][v2] = weight;
edges[v2][v1] = weight;
numOfEdges++;
public static void main(String[] args)
int n = 5;//节点的个数
String[] vertexValue = "A","B","C","D","E";
Graph graph = new Graph(vertexValue.length);
//添加节点
for (String vertex : vertexValue)
graph.addVertex(vertex);
//添加边
graph.addEdge(0,1,1);//AB
graph.addEdge(0,2,1);//AC
graph.addEdge(1,2,1);//BC
graph.addEdge(1,3,1);//BD
graph.addEdge(1,4,1);//BE
graph.showVertex();
以上是关于Day587.图 -数据结构和算法Java的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #587 (Div. 3) B - Shooting