码迷,mamicode.com
首页 > 其他好文 > 详细

邻接表模板

时间:2015-04-28 15:46:26      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

1.数组模拟链表实现

技术分享
struct edge{
    int u,v,w,next;
}a[MAX];
int E,u,v,w;
E = 0;
memset(head,-1,sizeof(head));
void add(int u,int v,int w){
    a[E].u = u;a[E].v = v;a[E].w = w;
    a[E].next = head[u];head[u] =E++;
    //head记录以u为结点的边的编号,a[E].next是模拟指针
    //a是边,其中记录的是边上的结点,权值的值
}
for(i = head[u];i!= -1;i = a[i].next){
    //来取值进行操作
    .......
}
View Code

2.vector实现(vector是向量,是一个可变长的动态数组,记录的是该节点相邻的所有的结点)

 

技术分享
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
vector<int>G[MAX];
void read_tree()
{
    int u,v;
    scanf("%d",&n);
    for(int i = 0  ; i < n; i++){
        scanf("%d%d",&u,&v);
        G[u].push_back(v);
        G[v].push_back(u);
    }
}//记录的是一个结点相邻的点
for(int i = 0 ; i < G[u].size(); i ++){
    int v= G[u][u];
   ....
}
View Code

 

邻接表模板

标签:

原文地址:http://www.cnblogs.com/zero-begin/p/4462762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!