import graph.Graph.Companion.MAX_WEIGHT
class Graph(val size: Int) {
var matrix = arrayOfNulls<IntArray>(size)
companion object {
val MAX_WEIGHT = Int.MAX_VALUE
}
/**
* 获取图的某个顶点的出度
*/
fun getOutDegree(index: Int): Int {
var degree = 0
matrix.getOrNull(index)?.forEach {
if (it != MAX_WEIGHT && it != 0) {
degree++
}
}
return degree
}
/**
* 获取图的某个顶点的入度
*/
fun getInDegree(index: Int): Int {
var degree = 0
matrix?.forEach {
it?.getOrNull(index)?.let {
if (it != MAX_WEIGHT && it != 0) {
degree++
}
}
}
return degree
}
fun main(args: Array<String>) {
/**
* 图的矩阵
* 横向代表出度,纵向代表入度
* v0 v1 v2 v3 v4
* v0 0 ∞ ∞ ∞ 6
* v1 9 0 3 ∞ ∞
* v2 2 ∞ 0 5 ∞
* v3 ∞ ∞ ∞ 0 1
* v4 ∞ ∞ ∞ ∞ 0
*/
var graph = Graph(5)
graph.matrix[0] = intArrayOf(0, MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, 6)
graph.matrix[1] = intArrayOf(9, 0, 3, MAX_WEIGHT, MAX_WEIGHT)
graph.matrix[2] = intArrayOf(2, MAX_WEIGHT, 0, 5, MAX_WEIGHT)
graph.matrix[3] = intArrayOf(MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, 0, 1)
graph.matrix[4] = intArrayOf(MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, 0)
println("图顶点1的出度:" + graph.getOutDegree(1))
println("图顶点1的入度:" + graph.getInDegree(1))
}
图
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就...
- 在柴米油盐的流年里,每个人的心里,都镌刻着点点挥之不去的美好瞬间,女人,尤其向往那些点亮心灵的时刻----她告诉你...