题库首页 › 青少年软件编程(C语言) › 题目 16817

花车巡游 题目描述 嘉年华的花车巡游正在展示精心编排的队列变换! 最初,所有 N辆花车排成一行,花车 i 位于第 i 位。变换程序由 K 个位置对 (a1,b1),(a2,b2),…,(aK,bK) 描述。表演过程中: · 第 1 分钟:位置 a1 与 b1 的花车交换位置 · 第 2 分钟:位置 a2 与 b2 的花车交换位置 · …… · 第 K 分钟:位置 aK 与 bK 的花车交换位置 · 第 K+1 分钟:重新从 (a1,b1) 开始交换(即位置 a1 与 b1 交换) · 第 K+2 分钟:位置 a2 与 b2 交换 · 如此无限循环…… 请计算每辆花车在整个表演过程中能到达的不同位置数量。 输入格式 第一行输入 N,K。 接下来 K 行每行包含 ai,bi(1≤ai<bi≤N)。 输出格式 输出 N行,第 i行为花车 i能到达的不同位置数量。 输入样例 5 4 1 3 1 2 2 3 2 4 输出样例 4 4 3 4 1 说明提示 样例解释 · 花车 1 可到达位置 {1,2,3,4} · 花车 2 可到达位置 {1,2,3,4} · 花车 3 可到达位置 {1,2,3} · 花车 4 可到达位置 {1,2,3,4} · 花车 5 始终在位置 5(未移动) 【数据范围】 1≤K≤2×105 2≤N≤105 限制 时间限制:1000ms 内存限制:256MiB

正确答案:参考程序(Python):N,K=map(int,input().split());pos=list(range(N));perm=list(range(N));for _ in range(K):a,b=map(int,input().split());perm[a-1],perm[b-1]=perm[b-1],perm[a-1];#周期置换perm。可达位置=在perm循环群中。visited=[False]*N;ans=[0]*N;for i in range(N):if not visited[i

试卷来源:202509 青少年等级考试C/C++真题七级

本卷相关题目

在线做题 同科目题库