在集合1中,讨论了非加权图。在这篇文章中,讨论了使用STL的加权图表示。该实现用于加权图的邻接表表示。
我们使用两个STL容器来表示图:
- vector:序列容器。在这里,我们使用它来存储所有顶点的邻接列表。我们使用顶点数作为该向量的索引。
- 对:一个简单的容器,用于存储成对的元素。在这里,我们使用它来存储相邻顶点的数量和连接到相邻边缘的边的权重。
这个想法是使用一对向量的向量。下面的代码实现了相同的功能。
C++
// C++ program to represent undirected and weighted graph
// using STL. The program basically prints adjacency list
// representation of graph
#include
using namespace std;
// To add an edge
void addEdge(vector > adj[], int u,
int v, int wt)
{
adj[u].push_back(make_pair(v, wt));
adj[v].push_back(make_pair(u, wt));
}
// Print adjacency list representaion ot graph
void printGraph(vector > adj[], int V)
{
int v, w;
for (int u = 0; u < V; u++)
{
cout << "Node " << u << " makes an edge with \n";
for (auto it = adj[u].begin(); it!=adj[u].end(); it++)
{
v = it->first;
w = it->second;
cout << "\tNode " << v << " with edge weight ="
<< w << "\n";
}
cout << "\n";
}
}
// Driver code
int main()
{
int V = 5;
vector > adj[V];
addEdge(adj, 0, 1, 10);
addEdge(adj, 0, 4, 20);
addEdge(adj, 1, 2, 30);
addEdge(adj, 1, 3, 40);
addEdge(adj, 1, 4, 50);
addEdge(adj, 2, 3, 60);
addEdge(adj, 3, 4, 70);
printGraph(adj, V);
return 0;
}
Python3
# Python3 program to represent undirected
# and weighted graph. The program basically
# prints adjacency list representation of graph
# To add an edge
def addEdge(adj, u, v, wt):
adj[u].append([v, wt])
adj[v].append([u, wt])
return adj
# Print adjacency list representaion ot graph
def printGraph(adj, V):
v, w = 0, 0
for u in range(V):
print("Node", u, "makes an edge with")
for it in adj[u]:
v = it[0]
w = it[1]
print("\tNode", v, "with edge weight =", w)
print()
# Driver code
if __name__ == '__main__':
V = 5
adj = [[] for i in range(V)]
adj = addEdge(adj, 0, 1, 10)
adj = addEdge(adj, 0, 4, 20)
adj = addEdge(adj, 1, 2, 30)
adj = addEdge(adj, 1, 3, 40)
adj = addEdge(adj, 1, 4, 50)
adj = addEdge(adj, 2, 3, 60)
adj = addEdge(adj, 3, 4, 70)
printGraph(adj, V)
# This code is contributed by mohit kumar 29
Javascript
输出:
Node 0 makes an edge with
Node 1 with edge weight =10
Node 4 with edge weight =20
Node 1 makes an edge with
Node 0 with edge weight =10
Node 2 with edge weight =30
Node 3 with edge weight =40
Node 4 with edge weight =50
Node 2 makes an edge with
Node 1 with edge weight =30
Node 3 with edge weight =60
Node 3 makes an edge with
Node 1 with edge weight =40
Node 2 with edge weight =60
Node 4 with edge weight =70
Node 4 makes an edge with
Node 0 with edge weight =20
Node 1 with edge weight =50
Node 3 with edge weight =70
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。