树的邻接表表示
先赋值
更新nt
更新h
更新idx
然后for循环进行遍历
for(int i = h[u];i!=-1;i = ne[i])
{
int vv = e[i];
//输出
}
下面是代码展示
#include<iostream>
#include<string.h>
using namespace std;
const int N = 1e4+10;
int e[N];//存储值
int w[N];//权重
int h[N];//头节点
int nt[N];//中间连接
int idx;
void add(int u,int v){
//插入u-v
e[idx] = v;
nt[idx] = h[u];
h[u] = idx;
idx++;
//先赋值
//更新nt
//更新h[t],以备下一次使用
//更新idx以备下一次使用
}
//将树遍历
void search(int u){
//以u为起点的所有边
for(int i = h[u];i!=-1;i = nt[i])
{
int v = e[i];
cout<<"u:"<<u<<"v:"<<v<<endl;
}
}
int main(){
memset(h,-1,sizeof h);
//先将它们都设成-1
idx = 0;
int n;
int m;
cin>>n;
cin>>m;
//边的个数
for(int i = 1;i<=n;i++){
int a,b;
cin>>a>>b;
add(a,b);
}
for(int i = 1;i<=m;i++){
search(i);
}
}