图论千万条,存图第一条
1.邻接矩阵
用一个矩阵x[i][j]表示i到j的路径
优点:代码方便,易于去重
缺点:空间复杂度爆炸
优化:二维vector(但是会变慢)
2.链式前向星
(抄资料毫不掩饰)
感谢zyr大佬的PPT
就是模拟一个链表
优点:便于读取,运行是最快的
缺点,不易排序与去重
链式前向星的代码实现
思路都有了,代码依然不会 自然而然就出来了:
存图
struct node{int nxt,to;//int w;
}p[2*M];
int cont=-1;
void addline(int x,int y){p[++cont]=(node){fi[x],y};fi[x]=cont;
}
遍历
for(int i=fi[x];~i;i=p[i].nxt){int now=p[i].to;想干啥干啥}
(注:~i在i==-1时返回0)