【发布时间】:2020-09-24 00:08:13
【问题描述】:
如何找到节点,从该节点到所有其他节点的最小距离之和在无向图中最小。我已经用 dfs 遍历了图表。
我找到了与源节点的最小距离。策略是什么?
我的尝试 -
import java.util.LinkedList;
import java.util.Scanner;
class Edge {
int from;
int to;
long wt;
Edge(int a, int b, long w)
{
from = a;
to = b;
wt = w;
}
}
class Graph {
LinkedList<Edge>[] adj_lis;
int V;
public static long[]val;
Graph(int v)
{
this.V = v;
adj_lis = new LinkedList[V];
for (int i = 0; i < V; i++)
adj_lis[i] = new LinkedList<>();
}
void add_edge(int to, int from, long wt)
{
adj_lis[from].add(
new Edge(from, to, wt));
adj_lis[to].add(
new Edge(to, from, wt));
}
// DFS method to find distance
void dfs(int v,
int par,
long sum,
boolean[] visited)
{
val[v] = sum;
visited[v] = true;
for (Edge e : adj_lis[v]) {
if (!visited[e.to])
dfs(e.to,
v,
sum + e.wt,
visited);
}
}
}
【问题讨论】:
标签: graph