> 技术文档 > 【C语言算法刷题】第2题 图论 dijkastra

【C语言算法刷题】第2题 图论 dijkastra


题目描述

一个局域网内有很多台电脑分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用 t 表示

其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1。

给定一个数组 times 表示一台电脑把相邻电脑感染所用的时间。

如图:path[i] = {i, j, t} 表示:电脑 i->j,电脑 i 上的病毒感染 j,需要时间 t。

输入输出描述

输入

432 1 12 3 13 4 12

输出

2

解释

第一个参数:局域网内电脑个数N,1 ≤ N ≤ 200;第二个参数:总共多少条网络连接第三个 2 1 1 表示2->1时间为1第六行:表示病毒最开始所在电脑号2

数据预处理

main(){ int n; scanf(\"%d\",&n);/*输入顶点的个数*/ /*初始化邻接矩阵*/ int matrix[n+1][n+1]; for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++){ matrix[i][j]=-1;/*全部是离散的点*/ } } /*输入边的条数m*/ int m; scanf(\"%d\",&m); /*输入邻接矩阵的边权重*/ for(int i=0;i<m;i++){ int u,v,w; scanf(\"%d %d %d\",&u,&v,&w