第一步
定义数组和变量:
int f[101][101]; //将得到的数据转化成邻接矩阵
int ans[101]; //用来记录答案(从1到各点的最短路径)
int q1[105],l=0,r=1; //队列,详见https://blog.csdn.net/a_n_d_y_s_u_n__/article/details/119543473
bool YN[101]; //记录一个点是否入队
然后初始化:
for(re int i=1;i<=n;++i){
YN[i]=false;
for(re int j=1;j<=n;++j){
if(i!=j)
f[i][j]=MAXint;
else
f[i][j]=0;
}
}
第二步
假设我们得到了一个这样子的图和数据
点数:6
边数:9
每条边相连的点以及边的权值:
1 2 7 //意思是:点1和点2之间有一条线,权值为7
1 3 9
1 6 14
2 4 15
2 3 10
3 6 2
3 4 11
6 5 9
4 5 6
将得到的点数,边数,每条边相连的点以及边的权值存下来
re int n,m;
cin>>n>>m;
re int a,b,q;
for(re int i=1;i<=m;++i){
cin>>a>>b>>q;
f[a][b]=f[b][a]=q;
}
第三步
经过初始化,读入后,我们就要开始分析计算方法了,首先,写出一个表格
F | 1 |
---|