gpt4 book ai didi

graph - 使用向量和对的邻接表图表示

转载 作者:行者123 更新时间:2023-12-04 23:22:50 26 4
gpt4 key购买 nike

我想实现竞争性编程一书中的邻接表图表示。实现使用了 V 个顶点的向量,对于每个顶点 v,另一个
包含具有连接的(相邻顶点及其边权重)对的向量
v.我在输入此图并显示输出时遇到问题。

在书中,他们做了这样的声明:

#include <iostream>
#include <vector>
using namespace std;
typedef pair<int, int> ii;
typedef vector<ii> vii;
vector <vii> AdjList;

我应该如何将下图的输入作为邻接表并输出它的邻接表表示?假设 ,每个边的成本都是 10。

Various representation of graphs

最佳答案

如果我们想使用图邻接实现以 n 个顶点和 m 个边的形式读取图输入。

#include<iostream>
#include<vector>
using namespace std;
typedef vector<int> vi;
typedef pair<int,int> ii;
typedef vector<ii> vii;

int main()
{
int n,m ;
cin>>n>>m;
vector<vii> adjList(n+1); //For vertex 1...n
//Reading edges for the input for graph
for(int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
/*Here u->v is the edge and pair second term can be used to store weight in
case of weighted graph.
*/
adjList[u].push_back(make_pair(v,10));
}
//To print the edges stored in the adjacency list
for(int i=1;i<=n;i++)
{
for(int j=0;j<(int)adjList[i].size();j++)
{
cout<<"Edge is "<<i<<" -> "<<adjList[i][j].first<<endl;
cout<<"Weight is "<<adjList[i][j].second<<endl;
}
}
return 0;
}

关于graph - 使用向量和对的邻接表图表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19467728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com