【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;  
}

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

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值