#include<bits/stdc++.h>
using namespace std;
const int MAX= 99999;
struct edge{
int to,cost,next; 终点,边权,下一条边在边数组的下标。如果是-1表示没有边了
}
edge ED[MAX]; -------MAX为大小为边的最大数量
int head[MAX]; ----hear[i]表示 顶点i (不是第i个顶点)的第一条边在边数组(ED)中的下标
int cnt=1; ----cnt表示边的数量
void add(int a,int b,int c) ----加边(起点,终点,边权)
{
ED[cnt].to=b;
ED[cnt].cost=c;
ED[cnt].next=head[a];
head[a]=cnt;
cnt++;
return ;
}
int main()
{
memset(head,-1,sizeof(head)); ------一定要初始化head为-1
---------------输入边---------------------------------
add(st,ed,val); ----加边(起点,终点,边权)
add(ed,st,val); ---***无向图还需要加这个add()*****
-----------------------------------------------------
for(int i=head[start] ; i!=-1 ; i=ED[i].next )--遍历start顶点的所有的边,每个边的下标为i,
{
cout<< start << ED[i] .to << ED[i] .cost <<endl;
边的信息存储在ed数组中,通过调用start || ED[i].to || ED[i].cost
分别来调用每条边的起点 || 终点 ||边权
注意:若起点是x, i=head[x],而不是i=x; 终点是ED[i].to 而不是ED[i].next;
}
}