概念:
前向星:前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,并记录下以某个点为起点的所有边在数组中的起始位置。
链式前向星:链式前向星其实就是静态建立的邻接表,时间效率为O(m),空间效率也为O(m)。遍历效率也为O(m)。
next表示当前结点的下一个节点。
用vector表示二维数组。
模板:
//前向星
int idx,e[mx],h[mx],ne[mx];
void add(int a,int b){
e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
memset(h,-1,sizeof(h));
hh=0;tt=-1;
add(a,b);
//链式前向星
struct stu
{
int next;
int cost;
};
vector<stu> tu[100100];
int dis[25010],vis[25010];
void add(int a,int b,int c){
stu t;
t.next=b;
t.cost=c;
tu[a].push_back(t);
}