动态
struct node { int u,v,w; node *next; }*first[N];//一个节点相连的所有节点 构成一条链 void init() { memset(first,NULL,sizeof(first)); } void add(int u,int v,int w) { node *p = new node; p->v = v; p->w = w; p->next = first[u];//类似于正序链表的插入 first[u] = p; } for(node *p = first[u] ; p!=NULL ; p= p->next) { int v = p->v; /// }
静态
struct node { int v,w,next; }men[51*N];//每个节点最多与50个相连的话 这样就够了。。 int first[N],t = 0; void init() { t = 0; memset(first,-1,sizeof(first)); } void add(int u,int v,int w) { men[t].v = v; men[t].w = w; men[t].next = first[u]; first[u] = t;//类似于链表的实现 t++; } for(int i = first[u] ; i !=-1 ; i = men[i].next) { int v = men[i].v; ///处理 }