2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)
题目描述
一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用 t 表示。
其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1。
给定一个数组 times 表示一台电脑把相邻电脑感染所用的时间。
如图:path[i] = {i, j, t} 表示:电脑 i->j,电脑 i 上的病毒感染 j,需要时间 t。
输入描述
4
3
2 1 1
2 3 1
3 4 1
2
输出描述
2
用例1
输入
4
3
2 1 1
2 3 1
3 4 1
2
输出
2
说明
第一个参数:局域网内电脑个数N,1 ≤ N ≤ 200;
第二个参数:总共多少条网络连接
第三个 2 1 1 表示2->1时间为1
第六行:表示病毒最开始所在电脑号2
考点
dijkstra算法
解题思路
本题是dijkstra算法的题目,可以参考【华为OD机试c++】最长广播效应【2023 B卷|200分】_最长广播效应 od-CSDN博客的解题思路。
代码
c++
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,m;//n电脑个数,m连接数
cin>>n>>m;
int hi=10000000;
vector<vector<int>> mat(n+1,vector<int>(n+1,hi)); //创建邻近矩阵
for(int i=0;i<m;i++) {
int a,b,t;
cin>>a>>b>>t;
mat[a][b]=t;
}