【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;
}
完结撒花,希望对大家有帮助