邊表:利用邊的關系來表示一個圖。
用到數組:
head//head[i]表示從i點出發的第一條邊的編號;
next[i]//與第i條邊起點相同的下一條邊的編號;
a[i]//第i條邊的終點;
val[i]//第i條邊的權值;
建立邊表:
void add(int u,int v,int c)//u表示起點v表示終點c表示由u到v的權值
{
size++//邊的編號加一;
next[size]=head[u]//將u點出發的原第一條邊的編號改為新邊的下一條邊的編號;
head[u]=size;//把由u點出發的第一條邊改為剛加入的邊的編號;
a[i]=v//第i條邊的終點為v;
val[i]=c;//第i條邊的權值為c;
}
//在邊表當中插入元素,實在邊表最開始添加的。
利用邊表遍歷圖的由u點出發的所有邊:
for(int i=head[u];~i;i=next[i])//next數組相當於指針,連接起點相同的個個點。
圖片解釋: