Graph 基于向量和对的邻接列表图表示

Graph 基于向量和对的邻接列表图表示,graph,Graph,我想实现《竞争编程1》一书中的邻接列表图表示法。该实现使用一个V顶点向量,对于每个顶点V,另一个顶点 包含具有连接的成对(相邻顶点及其边权重)的向量 我在输入这张图和显示输出时遇到问题 在书中,他们做了这样的声明: #include <iostream> #include <vector> using namespace std; typedef pair<int, int> ii; typedef vector<ii> vii; vector &

我想实现《竞争编程1》一书中的邻接列表图表示法。该实现使用一个V顶点向量,对于每个顶点V,另一个顶点 包含具有连接的成对(相邻顶点及其边权重)的向量 我在输入这张图和显示输出时遇到问题

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

#include <iostream>
#include <vector>
using namespace std;
typedef pair<int, int> ii;
typedef vector<ii> vii;
vector <vii> AdjList;
#包括
#包括
使用名称空间std;
第二类;
病毒载体vii型;
向量调整表;
我应该如何将下图的输入作为邻接列表并输出它的邻接列表表示?假设,edge的每个成本是10


如果我们想使用图形邻接实现读取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;
}
#包括
#包括
使用名称空间std;
typedef向量vi;
第二类;
病毒载体vii型;
int main()
{
int n,m;
cin>>n>>m;
向量adjList(n+1);//对于顶点1…n
//读取图形输入的边
对于(inti=0;i>u>>v;
/*这里u->v是边和对的第二项可以用来存储中的重量
加权图的情形。
*/
adjList[u].向后推(形成成对(v,10));
}
//打印存储在邻接列表中的边的步骤

对于(int i=1;iYou已经有了直观的答案:作为矩阵(数组[,],数组[])或树结构(带有包含节点的叶子的节点)或包含链接列表元素的数组来表示图片中的箭头。请看一下。我在编码它时遇到了问题:(不打印第0个顶点的边。我应该从0开始吗?