2026/4/16 16:31:48
网站建设
项目流程
宝安高端网站设计怎么样,深圳乐创网站建设,郑州管家网站托管,爱做网站外国欢迎大家订阅我的专栏#xff1a;算法题解#xff1a;C与Python实现#xff01; 本专栏旨在帮助大家从基础到进阶 #xff0c;逐步提升编程能力#xff0c;助力信息学竞赛备战#xff01;
专栏特色 1.经典算法练习#xff1a;根据信息学竞赛大纲#xff0c;精心挑选…欢迎大家订阅我的专栏算法题解C与Python实现本专栏旨在帮助大家从基础到进阶 逐步提升编程能力助力信息学竞赛备战专栏特色1.经典算法练习根据信息学竞赛大纲精心挑选经典算法题目提供清晰的代码实现与详细指导帮助您夯实算法基础。2.系统化学习路径按照算法类别和难度分级从基础到进阶循序渐进帮助您全面提升编程能力与算法思维。适合人群准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生希望系统学习C/Python编程的初学者想要提升算法与编程能力的编程爱好者附上汇总帖GESP认证C编程真题解析 | 汇总【题目来源】洛谷P11964 [GESP202503 七级] 图上移动 - 洛谷 (luogu.com.cn)【题目描述】小 A 有一张包含n nn个结点与m mm条边的无向图结点以1 , 2 , … , n 1,2,…,n1,2,…,n标号。小 A 会从图上选择一个结点作为起点每一步移动到某个与当前小 A 所在结点相邻的结点。对于每个结点i ( 1 ≤ i ≤ n ) i (1≤i≤n)i(1≤i≤n)小 A 想知道从结点i ii出发恰好移动1 , 2 , … , k 1,2,…,k1,2,…,k步之后小 A 可能会位于哪些结点。由于满足条件的结点可能有很多你只需要求出这些结点的数量。【输入】第一行三个正整数n , m , k n,m,kn,m,k分别表示无向图的结点数与边数最多移动的步数。接下来m mm行每行两个正整数u i , v i u_i,v_iui,vi表示图中的一条连接结点u i u_iui与v i v_ivi的无向边。【输出】共n nn行第i ii行( 1 ≤ i ≤ n ) (1≤i≤n)(1≤i≤n)包含k kk个整数第j jj个整数( 1 ≤ j ≤ k ) (1≤j≤k)(1≤j≤k)表示从结点i ii出发恰好移动j jj步之后可能位置的结点数量。【输入样例】4 4 3 1 2 1 3 2 3 3 4【输出样例】2 4 4 2 4 4 3 3 4 1 3 3【算法标签】《洛谷 P11964 图上移动》 #动态规划DP# #GESP# #2025#【代码详解】#includebits/stdc.husingnamespacestd;constintN505,K25;// 定义最大节点数N和最大步数Kintn,m,k;// n: 节点数m: 边数k: 最大步数intvis[N][K];// 记录节点u在step步内是否能被访问到inth[N],e[N*2],ne[N*2],idx;// 邻接表存储图// 添加边到邻接表voidadd(inta,intb){e[idx]b,ne[idx]h[a],h[a]idx;}// 深度优先搜索voiddfs(intu,intstep){if(vis[u][step])return;// 如果当前状态已访问直接返回vis[u][step]1;// 标记当前状态为已访问if(stepk)return;// 如果达到最大步数停止递归// 遍历所有邻居节点for(intih[u];i!-1;ine[i]){intje[i];dfs(j,step1);// 递归访问邻居节点步数加1}}intmain(){cinnmk;// 输入节点数、边数和最大步数memset(h,-1,sizeofh);// 初始化邻接表// 构建图的邻接表for(inti1;im;i){inta,b;cinab;add(a,b),add(b,a);// 无向图添加双向边}// 对每个节点进行DFS统计在1到k步内能到达的节点数for(inti1;in;i){memset(vis,0,sizeofvis);// 初始化访问数组dfs(i,0);// 从节点i开始DFS初始步数为0// 输出从节点i出发在1到k步内能到达的节点数for(intj1;jk;j){intres0;for(intkk1;kkn;kk){resvis[kk][j];// 统计在j步内能到达的节点数}coutres ;}coutendl;}return0;}【运行结果】4 4 3 1 2 1 3 2 3 3 4 2 4 4 2 4 4 3 3 4 1 3 3