数组模拟邻接表模板
2018-02-24 16:16
316 查看
数据结构struct node
{
int u;//保存每一条边的起始点
int v;//保存每一条边的终止点
int w;//保存每一条边的权值
int next;//保存每一条边的上一条边的编号
}edge[maxn*2];//保存每一条边,下标表示每一条边的编号
int head[maxn];//保存每一个顶点的起始边的编号head数组初始化:memset(head,-1,sizeof(head));
有向图建图void add(int u,int v,int w,int &k)
{
edge[k].u=u;
edge[k].v=v;
edge[k].w=w;
edge[k].next=head[u];
head[u]=k++;
}无向图建图void add(int u,int v,int w,int &k)
{
edge[k].u=u;
edge[k].v=v;
edge[k].w=w;
edge[k].next=head[u];
head[u]=k++;
swap(u,v);
edge[k].u=u;
edge[k].v=v;
edge[k].w=w;
edge[k].next=head[u];
head[u]=k++;
}遍历每个点所连接的边for(int k=head[u];k!=-1;k=edge[k].next)
{
int v=edge[k].v;
int w=edge[k].w;
cout<<"起点:"<<u<<endl;
cout<<"终点:"<<v<<endl;
cout<<"权值:"<<w<<endl;
}
{
int u;//保存每一条边的起始点
int v;//保存每一条边的终止点
int w;//保存每一条边的权值
int next;//保存每一条边的上一条边的编号
}edge[maxn*2];//保存每一条边,下标表示每一条边的编号
int head[maxn];//保存每一个顶点的起始边的编号head数组初始化:memset(head,-1,sizeof(head));
有向图建图void add(int u,int v,int w,int &k)
{
edge[k].u=u;
edge[k].v=v;
edge[k].w=w;
edge[k].next=head[u];
head[u]=k++;
}无向图建图void add(int u,int v,int w,int &k)
{
edge[k].u=u;
edge[k].v=v;
edge[k].w=w;
edge[k].next=head[u];
head[u]=k++;
swap(u,v);
edge[k].u=u;
edge[k].v=v;
edge[k].w=w;
edge[k].next=head[u];
head[u]=k++;
}遍历每个点所连接的边for(int k=head[u];k!=-1;k=edge[k].next)
{
int v=edge[k].v;
int w=edge[k].w;
cout<<"起点:"<<u<<endl;
cout<<"终点:"<<v<<endl;
cout<<"权值:"<<w<<endl;
}
相关文章推荐
- 数组模拟存邻接表跑dfs 模板
- 迪杰斯特拉--数组模拟邻接表优化
- 邻接表用数组模拟+dij+优先队列,dfs剪枝+邻接表用数组模拟,链表+dij+优先队列
- SPFA的两种实现形式(二维数组与数组模拟邻接表)
- 数组模拟邻接表
- 用数组模拟邻接表
- 用数组模拟邻接表 hdu2647
- 邻接表的两种实现(链表和数组模拟)
- poj1511(第一次用数组模拟邻接表…
- 数组模拟实现邻接表
- poj 3013(数组模拟邻接表+spfa)
- [置顶] 链式前向星(数组模拟邻接表)
- HDU 5102 The K-th Distance(队列模拟,数组模拟邻接表)
- 做了一道跑大数据的最短路挂了,基于vector的二维模拟邻接表实现Dijkstra算法(*【模板】)
- /*用数组模拟邻接表 超时×/
- 数组模拟实现邻接表
- joj 2431: Shift and Increment (模板队列与数组模拟队列的对比练习)
- hash 链地址法+ 数组模拟邻接表实现
- 用数组模拟邻接表
- 用数组模拟大数加法模板