存储结构1---邻接矩阵
int start, end, weight;//数组初始化为0或特别大的数
while(num --){
cin >> start >> end >> weight;
map[start][end] = weight;//记录从起点start到终点end的权重weight
}
空间复杂度O(n^2) 得到图中所有边的信息的时间复杂度为O(n^2) 效率太低
存储结构2---邻接表
#include<iostream>
#include<vector>
using namespace std;
const int N = 1e4;
typedef struct edge{
int end, weight;//存储终点和权重
}eg;
int map[N][N];//邻接矩阵
vector<eg> p[N];//邻接表 下标为起点 结构体存储终点和权重 本质上来说还是个二维矩阵
//p[i]为一维数组 i 存储起点 依次将该点的各个终点和权重放入容器中
int main(){
int n, m;//节点个数,边的个数
cin >> n >> m;
int start, end, weight;
for(int i = 1; i <= m; i ++){//存入每条边的信息 建立邻接表
cin >> start >> end >> weight;
p[start].push_back({end, weight});
}
for(int i = 1; i <= n; i ++)//邻接表转化为邻接矩阵 i的下标注意灵活变通 可能会从0开始
for(int j = 0; j < p[i].size(); j ++)
map[i][p[i][j].end] = p[i][j].weight;
}