通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"CSP考试" 试卷中 CSP-S1提高级初赛试卷[2023] 中有题目如下:
第1题
(第k小路径)给定一张.个点.条边的有向无环图,顶点编号从0到n-1。对于一条路径,我们定义"路径序列"为该路径从起点出发依次经过的顶点编号构成的序列。求所有至少包含一个点的简单路径中,“路径序列"字典序第k小的路径。保证存在至少k条路径。上述参数满足1≤n.m≤105和1≤k≤1018。
在程序中,我们求出从每个点出发的路径数量。超过1018的数都用1018表示。然后我们根据k的值和每个顶点的路径数量,确定路径的起点,然后可以类似地依次求出路径中的每个点。
试补全程序。
#include <iostream> #include <algorithm> #include <vector> const int MAXN = 100000; constlonglongLIM=100000000000000000011; int n,m,deg[MAXN]; std::vector<int> E[MAXN]; long long k,f[MAXN]; int next(std::vector<int>cand,long long &k){ std::sort(cand.begin(),cand.end()); for(int u : cand){ if (①)return u; k -= f[u]; } return -1; } int main(){ std::cin>>n>>m>>k; for(inti=0;i<m;++i){ int u, v; std::cin >>u >> v;//一条从u到v的边 E[u].push_back(v); ++deg[v]; } std::vector<int> Q; for(inti=0;i<n;++i) if (!deg[i])Q.push_back(i); for(inti=0;i<n;++i){ int u = Q[i]; for (int v : E[u]){ if (②)Q.push_back(v); --deg[v]; } } std::reverse(Q.begin(), Q.end()); for(int u : Q){ f[u]= 1; for(int v:E[u])f[u]=③; } int u = next(Q,k); std::cout << u << std::endl; while(④){ ⑤; u = next(E[u],k); std::cout << u << std::endl; } return 0; }
④处应填( )
u!=-1
!E[u].empty()
k >o
k >1
所属试卷:CSP-S1提高级初赛试卷[2023]
有两个关系R和S,则由关系R得到关系S的操作是关系 R
了将HelloApplet(主类名为HelloAppl
编写代码,获得用户输入的一个十进制数,分别输出其二进制
有以下程序:程序的运行结果是( )。
在关系中能唯一标识元组的最小属性集称为该表的键或码。二
下面能作为软件需求分析工具的是( )。
以下数据结构中,属于非线性数据结构的是( )。
以下叙述中正确的是( )。
已知 x={1:2,2:3},那么表达式 x.get
表达式 0 or 5 的值为_________。
已知x={1:1,2:2},那么执行语句x[3]=3之
以下程序中调用scanf函数给变量a输入数值的方法是错
执行下面程序段后,k的值为________。
网卡的主要功能不包括( )
利用管道技术统计当前目录下有多少个文件,该命令是___
假设文件fileA的符号链接为fileB,那么删除fi
创建表的语句中,unique key子句表示定义唯一约
选择数据库TEST为当前数据库的命令是 。
实体完整性规则要求主属性码取值 。
创建表时使用 ____ 或key参数可定义索引。
在下列网间连接器中,在数据链路层实现网络互连
删除数据表用以下哪一项( )
功能:从低位开始取出长整型变量s中偶数位上的数,依次构
预处理命令行都必须以_____号开始。
有如下程序段:如下论述中正确的是( )
下列选项中不属于结构化程序设计原则的是
输入:6 6 5 5 3 输出:___________
计算机在工作过程中,若突然停电, ( )中的信息不会丢
输入:9734526输出:______________
( 取石子游戏 ) 现有 5 堆石子,石子数依次为 3
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2