1 条题解

  • 1
    @ 2026-8-30 10:52:19

    50pts

    //仅在每个门传送的门不相同的情况下
    #include<bits/stdc++.h>
    using namespace std;
    int n,a[1145140],m,s=0;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}cin>>m;
    	s=a[1];
    	for(int i=1;i<=m;i++){
    		s=a[s];//定义s,仅记下一传送点
    	}
    	for(int i=1;i<=m;i++){
    		if(a[i]==s){
    			cout<<i;
    			return 0;
    		} 
    	}
    } 
    

    但是考虑到可能会有传送到相同的门

    100pts

    #include<bits/stdc++.h>
    using namespace std;
    int n,a[1145140],b[1145140],m;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}cin>>m;
    	b[1]=a[1];//先告诉标记数组一号门传送的位置
    	for(int i=2;i<=m;i++){
    		b[i]=a[b[i-1]];//标记下一次传送的门
    	}cout<<b[m];输出传送终点
    } 
    
    
    • 1

    信息

    ID
    364
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    49
    已通过
    11
    上传者