0
点赞
收藏
分享

微信扫一扫

树的数组存储

就是耍帅 2022-01-22 阅读 56

之前一直没写,每次又都忘,记录一下吧

// 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点
int h[N], e[M], ne[M], idx;//这里的e[]存储所有的边 
//这里e[]里面的大小应该是边数 
// 添加一条边a->b
void add(int a, int b)
{
//	比如这里是2->1->-1中间插入3变成2->1->3->-1 ,这里a就是2,b就是3 
    e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
    /*
    e[idx] = b也就是这个空间先存入b(3)
	然后ne[idx]它的下一个指针也就变成了之前指向1的指针h[a(2)]
	然后h[a(2)]再指向3! 
    */
}

// 初始化
idx = 0;
memset(h, -1, sizeof h);

//这里的h[]是每个点的头节点 
//e[i]是每个节点的值是多少,也存的是我们所有的边 
//ne[]表示节点i的next指针是多少
//idx存储我们要用的下一个地址 
举报

相关推荐

0 条评论