目录
一、邻接矩阵
采用两个数组来存储图,一个一维数组存储图顶点信息,一个二维数组存储图边或弧的信息,二维数组可以看作矩阵,这也是“邻接矩阵”名字的由来。邻接矩阵是表示顶点之间相邻关系的矩阵。
邻接矩阵的好处:
(1)直观、简单、好理解
(2)方便检查任意一对定点间是否存在边
(3)方便找任一顶点的所有“邻接点”(有边直接相连的顶点)
(4)方便计算任一顶点的度
二、数组存边
struct Edge
{
int value;//边的权
int to;//边的终点
int from;//边的起点
} edge[500005];
//存边
for (int i = 0; i < m; i++)
{
cin >> u >> v >> w;
edge[i].from = u;
edge[i].to = v;
edge[i].value = w;
}
三、邻接表
vector<int> a[500005];
//存边
for(int i=0;i<m;i++){
cin >> u >>v;//u点与v点是连通的
a[u].push_back(v);
//a[i]存的为与i点相连的点,但一般不存边权
}
//遍历
for(int i=1;i<=n;i++)//遍历起点
{
for(int j=0;j<a[i].size();j++)//遍历和i相连的点
{
cout << "起点:"<< i<<" 终点:"<< a[i][j] <<'\n';
}
}