> 文章列表 > 【keda编程】P1262. 顺藤摸瓜

【keda编程】P1262. 顺藤摸瓜

【keda编程】P1262. 顺藤摸瓜

题目描述

有一些黑社会社团为了安全,采取单线联系的方式,每个成员只知道自己的上线。现在警察监听某社团的一个低级成员张三的通讯信息,通过“顺藤摸瓜”的方式,对每个成员的上线成员往上跟踪,直到最后一个没有上线的成员,就是社团老大。

现在请你编写代码,根据警察提供的跟踪信息汇总,输出从社团老大到某个成员的单线联系线索。

输入格式:

  • 第一行两个正整数 n 和 k,n 表示成员数,k 表示某个成员
  • 第二行 n 个数字,表示第 i 个每个成员的上线是谁,老大的上线是自己
  • 数据确保 k 在 1..n 之间,也确保有一个成员是老大

输出格式:

  • 从老大开始,一路输出其下线,直到k为止
  • 上线与下线直接通过"->"连接

输入数据 1

5 3
2 2 4 1 4

输出数据 1

2->1->4->3

样例说明:3是低级成员k,上线是4,4的上线是1,1的上线是2,2的上线是自己(老大),反着输出就成了2->1->4->3。

数据范围与约定

1<=n<=10000

这道题只需要写一个简单的函数print()这道题就可以ac辣

void print(int x) {if(x!=a[x])print(a[x]); cout<<x; if(x!=k)cout<<"->";
}

像这样,然后在main传入参数

print(k);

最后加上输入输出,这道题就完美的ac辣

#include<bits/stdc++.h>
using namespace std;
int n,k,a[100001];
void print(int x) {if(x!=a[x])print(a[x]); cout<<x; if(x!=k)cout<<"->";
}
int main() {cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i];print(k); return 0;  
}

完结撒花,希望对大家有帮助