通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"NOIP真题" 试卷中 NOIP第二十一届全国青少年信息学奥林匹克联赛初赛试题[2015提高组] 中有题目如下:
第1题
(最短路径问题)无向连通图 G 有 n 个结点,依次编号为 0,1,2,…,(n−1)。用邻接矩阵的形式给出每条边的边长,要求输出以结点 0 为起点出发,到各结点的最短路径长度。
使用 Dijkstra 算法解决该问题:
利用 dist 数组记录当前各结点与起点的已找到的最短路径长度;
每次从未扩展的结点中选取 dist 值最小的结点 v 进行扩展,更新与 v 相邻的结点的 dist 值;
不断进行上述操作直至所有结点均被扩展,此时 dist 数据中记录的值即为各结点与起点的最短路径长度。
#include <iostream> using namespace std; const int MAXV = 100; int n, i , j, v; int w[MAXV][MAXV]; // 邻接矩阵,记录边长 // 其中 w[i][j] 为连接结点 i 和结点 j 的无向边长度,若无边则为 -1 int dist[MAXV]; int used[MAXV]; // 记录结点是否已扩展(0:未扩展;1:已扩展) int main() { cin >> n; for (i = 0; i < n; i+ +) for (j = 0; j < n; j++) cin >> w[i][j]; dist[0] = 0; for (i = 1; i < n; i+ +) dist[i] = -1; for (i = 0; i < n; i+ +) used[i] = 0; while (true) { ① ; for (i = 0; i < n; i++) if (used[i] != 1 && dist[i] != -1 && (v == -1 || ② )) ③ ; if(v == -1) break; ④ ; for (i = 0; i < n; i++) if (w[v][i] != -1 && (dist[i] == -1 || ⑤ )) dist[i] = dist[v] + w[v][i]; } for (i = 0; i < n; i++) cout << dist[i] << endl; return 0; }
所属试卷:NOIP第二十一届全国青少年信息学奥林匹克联赛初赛试题[2015提高组]
以下关于 Python 文件打开模式的描述,错误的是
某计算机按字节编址,采用页式虚拟存储管理方式,虚拟地址
下列关于栈叙述正确的是( )。
有以下程序程序运行后的输出结果是( )。
以下叙述中错误的是( )。
要求通过while循环不断读入字符,当读入字母N时结束
Python的主程序文件python.exe属于二进制
若在 main函数中定义,char*s ="hel
若运行时输入:4.4<回车>,则以下程序的运行结果是
一个C程序的执行是从( )。
设有语句int a[3][2],下面_________
给定程序中,函数fun的功能是用函数指针指向要调用的函
关于DNS下列叙述错误的是( A )。
下列叙述中错误的是
假定输入的字符串中只包含字母和*号。请编写函数fun,
给定一个含n(n≥1)个整数的数组,请设计一个在时间上
shell脚本程序test(具有可执行权限)只有如下两
退出MySQL服务器连接的命令是 。
关系中主码的取值必须唯一且非空,这条规则是 完整性
存在一个等待事务集{T0,T1,„,Tn},其中T0正
已知f(n)=n!=n×(n-1)×(n-2)×···
是一个合法的为字符串数组赋值的语句。
预处理命令行都必须以_____号开始。
设x=4<4-!0,x的值为_____。
函数fun的功能是:从三个形参a,b,c中找出中间的那
当 n=100时,若 b数组满足,对于任意0≤i<n,
(双子序列最大和)给定一个长度为n(3≤n≤1000)
小陈现有2个任务A,B要完成,每个任务分别有若干步骤如
LAN 的含义是( )。
高度为 n 的均衡的二叉树是指:如果去掉叶结点及相应的
更多选择题
更多填空题
计算机二级Python语言程序设计模拟试卷
Python第三方库
2025年考研408计算机统考真题在线评测(附答案)
Python标准库
Python函数
Python文件
Python组合数据类型