今天我们学习了一些图论的知识,包括
图的存储
邻接矩阵就是用一个二维数组(adj)来存边,adj[u][v]则表示点u和点v之间是否存在一条边(或这条边的权值
邻接表
定义head和next两个一位数组
head[i]存的是从i号点出发的边的编号,如果碰上编号为j的边也是从i点出发,则next[j]=head[i];head[i]=j;
最短路之Floyd算法
f[x][y]表示从x到y的最短路
代码模板如下
for (k = 1; k <= n; k++) {
for (x = 1; x <= n; x++) {
for (y = 1; y <= n; y++) {
f[x][y] = min(f[x][y], f[x][k] + f[k][y]);
}
}
}
(k表示x只能通过编号为1~k的“中转站”再到y)