7-4 最小生成树 分数 100 作者 tgiwx 单位 兰州大学 给定结点数为 n,边数为 m 的带权无向连通图 g,所有结点编号为 1,2,⋯,n。 求 g 的最小生成树的边权和。 输入格式: 第一行两个正整数 n,m。 之后的 m 行,每行三个正整数u i ,v i ,w i (1≤u i ,v i ≤n,0≤w i ≤10 9 ),描述一条连接结点 u i 和 v i ,边权为 w i 的边。 输出格式: 一个整数表示 g 的最小生成树的边权和。


以下是使用 Prim 算法解决此问题的 C++代码: ```cpp #include <iostream> #include <vector> #include <queue> using namespace std; const int MAXN = 10005; // 最大节点数 const int INF = 1e9; // 无穷大 int n, m; // 节点数和边数 vector<pair<int, int>> graph[MAXN]; // 邻接表存储图 bool visited[MAXN]; // 标记节点是否已访问 int prim() { int res = 0; // 结果 priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; // 最小堆 pq.push({0, 1}); // 从第一个节点开始 while (!pq.empty()) { auto cur = pq.top(); // 取出当前最小边 pq.pop(); int cost = cur.first; // 边权 int node = cur.second; // 节点 if (visited[node]) continue; // 如果已访问过,跳过 visited[node] = true; // 标记已访问 res += cost; // 累加边权 for (auto edge : graph[node]) { // 遍历相邻节点 if (!visited[edge.first]) { // 如果未访问 pq.push({edge.second, edge.first}); // 加入堆 } } } return res; } int main() { cin >> n >> m; for (int i = 0; i < m; i++) { int u, v, w; cin >> u >> v >> w; graph[u].push_back({v, w}); graph[v].push_back({u, w}); } cout << prim() << endl; return 0; } ``` 额外需要注意的逻辑点: 1. 邻接表的构建要确保准确,不要遗漏边。 2. 最小堆的操作要注意优先级的设置。 3. 标记已访问节点时要确保正确,避免重复计算。 [2024-12-15 15:49:02 | AI写代码神器 | 504点数解答]
- 7-4 最小生成树 分数 100 作者 tgiwx 单位 兰州大学 给定结点数为 n,边数为 m 的带权无向连通图 g,所有结点编号为 1,2,⋯,n。 求 g 的最小生成树的边权和。 输入格式: 第一行两个正整数 n,m。 之后的 m 行,每行三个正整数u i ,v i ,w i (1≤u i ,v i ≤n,0≤w i ≤10 9 ),描述一条连接结点 u i 和 v i ,边权为 w i 的边。 输出格式: 一个整数表示 g 的最小生成树的边权和。(504点数解答 | 2024-12-15 15:49:02)85
- 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(385点数解答 | 2025-01-08 03:43:54)261
- 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(346点数解答 | 2025-01-08 03:46:29)258
- c++描述 一天,一个画家在森林里写生,突然爆发了山洪,他需要尽快返回住所中,那里是安全的。 森林的地图由R行C列组成,空白区域用点“.”表示,洪水的区域用“*”表示,而岩石用“X”表示,另画家的住所用“D”表示,画家用“S”表示。 有以下几点需要说明: 1.每一分钟画家能向四个方向移动一格(上、下、左、右)。 2.每一分钟洪水能蔓延到四个方向的相邻格子(空白区域)。 3.洪水和画家都不能通过岩石区域。 4.画家不能通过洪水区域(同时也不行,即画家不能移到某个格子,该格子在画家达到的同时被洪水蔓延到了,这也是不允许的)。 5. 洪水蔓不到画家的住所。 给你森林的地图,编写程序输出最少需要花费多长时间才能从开始的位置赶回家中。 输入描述 输入第一行包含两个整数R和C(R,C<=50)。 接下来R行每行包含C个字符(“.”、“*”、“X”、“D”或“S”)。 地图保证只有一个“D”和一个“S”。 输出描述 输出画家最快安全到达住所所需的时间,如果画家不可能安全回家则输出“KAKTUS”。 用例输入 1 3 3 D.* ... .S. 用例输出 1 (1384点数解答 | 2025-03-16 17:33:49)232
- 三倍子串 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定一个十进制正整数 n n,请问可以从 n n 中截取多少种不同的子串,使得子串构成的数字是 3 3 的倍数。 例如:当 n = 1234 n=1234 时,有且仅有 3 3, 12 12, 123 123, 234 234 这四个子串是 3 3 的倍数。 输入格式 单个整数:表示输入的数字 n n 输出格式 单个整数:表示 3 3 的倍数的子串数量。 数据范围 对于 20 % 20% 的数据, 1 ≤ n ≤ 1 0 9 1≤n≤10 9 ; 对于 50 % 50% 的数据, 1 ≤ n ≤ 1 0 100 1≤n≤10 100 ; 对于 70 % 70% 的数据, 1 ≤ n ≤ 1 0 1000 1≤n≤10 1000 ; 对于 100 % 100% 的数据, 1 ≤ n ≤ 1 0 100000 1≤n≤10 100000 样例数据 输入: 95764 输出: 6 说明: 子串6,9,57,576,957,9576是3的倍数 输入: 1111 输出: 2 说(486点数解答 | 2025-08-29 11:52:55)48
- c++描述 小夏同学在思考一个复杂的问题: 输入 m,a,n,请输出 ( i=1 ∑ n a i )modm,即 (a+a 2 +⋯+a n )modm。 说明/提示 对于所有测试数据,保证:1≤m,a≤10 9 ,1≤n≤10 15 。 测试点编号 n a 特殊性质 1−3 ≤10 7 ≤10 9 无 4−6 ≤10 15 ≤2 无 7−10 ≤10 15 ≤10 9 m 为质数 11−20 ≤10 15 ≤10 9 无 输入描述 输入 m,a,n。 输出描述 输出 ( i=1 ∑ n a i )modm。 用例输入 1 1000 2 10 用例输出 1 46 用例输入 2 11451410 1919811 8765423561347 用例输出 2 2213137 用例输入 3 114514 9999 1000 用例输出 3 28840(911点数解答 | 2025-03-29 19:12:07)165
- 样例输入: 1 520021910437 99 100 98 zhang san 1 520021910438 99 100 92 zhang san 1 520021910439 90 100 94 li si 1 520021910440 90 100 94 wang wu 2 520021910437 89 100 94 zhang san 3 520021910430 4 520021910437 5 zhang san 6 7 0 样例输出(此处增加了换行以方便解释): 520021910437 zhang san 89 100 94 520021910437 zhang san 89 100 94 520021910438 zhang san 99 100 92 520021910437 zhang san 89 100 94 520021910438 zhang san 99 100 92 520021910439 li si 90 100 94 520021910440 wang wu 90 100 94 520021910438 zhang san 99 100(28点数解答 | 2024-12-12 11:56:59)248
- 阅读代码完成填空1~7题 import numpy as np # 生成 1000 个服从正态分布的随机整数(均值 100,标准差 8) np.random.seed(42) num1 = np.random.normal( ______, 8, size=1000).reshape(-1,1). ______ #第1、2空 # 生成 1000 个 1 到 10 之间的随机整数 num2 = np.random.randint(1, ______, size=1000).reshape(-1,1) #第3空 # 合并数据 data = np.__________((num1, num2), axis=_________) #第4、5空 # 保存到 CSV 文件,数据间以逗号间隔,保存格式为整数%d np.savetxt("data.csv", data, delimiter="_________", fmt='%d',header="num1,num2", comments="") #第6空 # 读取 CSV 文(506点数解答 | 2025-03-23 14:32:14)172
- 阅读代码完成填空1~7题 import numpy as np # 生成 1000 个服从正态分布的随机整数(均值 100,标准差 8) np.random.seed(42) num1 = np.random.normal( ______, 8, size=1000).reshape(-1,1). ______ #第1、2空 # 生成 1000 个 1 到 10 之间的随机整数 num2 = np.random.randint(1, ______, size=1000).reshape(-1,1) #第3空 # 合并数据 data = np.__________((num1, num2), axis=_________) #第4、5空 # 保存到 CSV 文件,数据间以逗号间隔,保存格式为整数%d np.savetxt("data.csv", data, delimiter="_________", fmt='%d',header="num1,num2", comments="") #第6空 # 读取 CSV 文(116点数解答 | 2025-03-26 22:22:15)200
- 阅读代码完成填空1~7题 import numpy as np # 生成 1000 个服从正态分布的随机整数(均值 100,标准差 8) np.random.seed(42) num1 = np.random.normal( ______, 8, size=1000).reshape(-1,1). ______ #第1、2空 # 生成 1000 个 1 到 10 之间的随机整数 num2 = np.random.randint(1, ______, size=1000).reshape(-1,1) #第3空 # 合并数据 data = np.__________((num1, num2), axis=_________) #第4、5空 # 保存到 CSV 文件,数据间以逗号间隔,保存格式为整数%d np.savetxt("data.csv", data, delimiter="_________", fmt='%d',header="num1,num2", comments="") #第6空 # 读取 CSV 文(178点数解答 | 2025-03-26 22:26:30)237
- 查询分数2 c++ 题目内容 全部提交 我的提交 题目统计 简单 时间限制: 1000ms 内存限制: 256mb 分数:100 oi排行榜得分:12(0.1*分数+2*难度) 数组 第十六讲(level1-1) 第八讲(level1) 描述 童程童美学院对某班级的n名同学进行了一次测试。要求编写程序:输入n名学生的成绩,以每名学生的学号作为输入的顺序( 学号从1开始)。再输入某名学生的学号,查询该名学生的成绩。 输入描述 三行; 一行一个正整数n,代表n名学生(1≤n≤100); 一行n个整数,表示n名学生的分数,数值之间使用空格分隔(0≤分数≤100); 一行一个正整数id,表示某名学生的学号(1≤id≤100)。 输出描述 一行一个整数,代表某名学生的成绩。(228点数解答 | 2024-12-05 19:24:38)139
- 查询分数2 c++ 题目内容 全部提交 我的提交 题目统计 简单 时间限制: 1000ms 内存限制: 256mb 分数:100 oi排行榜得分:12(0.1*分数+2*难度) 数组 第十六讲(level1-1) 第八讲(level1) 描述 童程童美学院对某班级的n名同学进行了一次测试。要求编写程序:输入n名学生的成绩,以每名学生的学号作为输入的顺序( 学号从1开始)。再输入某名学生的学号,查询该名学生的成绩。 输入描述 三行; 一行一个正整数n,代表n名学生(1≤n≤100); 一行n个整数,表示n名学生的分数,数值之间使用空格分隔(0≤分数≤100); 一行一个正整数id,表示某名学生的学号(1≤id≤100)。 输出描述 一行一个整数,代表某名学生的成绩。(362点数解答 | 2024-12-05 19:26:12)375