存储一个无向图,每一个无向边都要存储成两个有向边,有向边的存储信息包括(边的权重,边指向点,边的起始点[因为每个边都存储它的起始点的链条当中所以不需要显性存储],一个点的链条中的下一条边)
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int M=N*2;
int n;
int h[N],e[M],w[M],ne[M];
int idx;
void add(int a,int b,int c){
e[idx]=b;
w[idx]=c;
ne[idx]=h[a];
h[a]=idx++;
}
int main(){
cin>>n;
memset(h,-1,sizeof(h));
for(int i=0;i<n-1;i++){
int a,b,c;//a是一个点 b是另一个点 c是边的权重
cin>>a>>b>>c;
add(a,b,c);
add(b,a,c);//这里原本是无向边,我们以有向边的形式存储,所以还要再补充一个这个
}
}