6 solutions

  • 3
    @ 2024-11-29 20:29:35
    #include<bits/stdc++.h>
    
    using namespace std;
    struct Node{
    	int data;
    	Node *next;
    };
    int a[1000010];
    
    int main(){
    	//一半链表 +一半数组 
    	int n;
    	cin>>n;
    	Node *head=new Node;
    	Node *dfg=head; 
    	for(int i=1;i<=n;i++){
    		cin>>a[i]; 
    		if(a[a[i]]==0)a[a[i]]=i;//标记数值位置 (只标对应的) 
    	}
    	Node *l=new Node;
    	int h;
    	cin>>h;
    	l->data=h;
    	Node *k=l;
    	int u=h;
    	
    	for(int i=1;i<=n;i++){
    		// 连起来 
    		Node *f=new Node;//创造一个新节点 
    		f->data=a[u];//指向对应位置 
    		k->next=f;
    		k=f;
    		u=a[u];
    	}
    	k->data=0;
    	//遍历 
    	while(l->data!=0){
    		cout<<l->data<<" ";
    		l=l->next;
    	}
    	return 0;
    }
    
    • 2
      @ 2024-12-3 19:02:46
      #include<bits/stdc++.h>
      using namespace std;
      int nxt[1000010]; 
      int main(){
      	int n;
      	cin>>n;
      	for(int i=1;i<=n;i++){
      		int s;
      		cin>>s;
      		nxt[i]=s;
      	}
      	int l;
      	cin>>l;
      	cout<<l<<" ";
      	for(int i=2;i<=n;i++){
      		cout<<nxt[l]<<" ";
      		l=nxt[l];
      	}
      	return 0;
      }
      //数组版
      
      • -1
        @ 2023-11-22 16:42:19

        数组

        #include<bits/stdc++.h>
        using namespace std;
        int arr[1000010],a2[1000010];
        int main(){
        	int n,s,t;//
        	cin>>n;//
        	for(int i=1;i<=n;i++) cin>>arr[i];//
        	cin>>s;//
        	t=s;//
        	for(int i=1;i<=n;i++){
        		a2[i]=t;//
        		t=arr[t];//
        	}
        	for(int i=1;i<=n;i++) //cout<<a2[i]<<' ';
        	return 0;
        } 
        /////fangweibiaoji
        ///////////////////
        
        • -2
          @ 2023-12-30 1:00:27

          用了个递归

          #include<iostream>
          using namespace std;
          const int N=1e6;
          int a[N];
          int n,h;
          void f(int x,int t)
          {
           if(t>=n)//返回
            return;
           cout<<x<<" ";//输出
           f(a[x],t+1);//递归
          }
          int main()
          {
           cin>>n;//输入
           for(int i=1;i<=n;i++)
           {
            int x;
            cin>>x;//输入
            a[i]=x;
           }
           cin>>h;//输入
           f(h,0);//递归
           return 0;//完结散花
          }
          
          • -3
            @ 2023-12-15 13:28:32
            #include <bits/stdc++.h>
            using namespace std;
            int a[2000005];
            int main(int argc, char **argv){
            	int n,h;
            	cin >> n;
            	for (int i = 1;i <= n;i++){
            		cin >> a[i];
            	}
            	cin >> h;	// 输入第一个数
            	for(int i = 0;a[h] != 0;i++){
            		printf("%d ",h);	// 输出这个数
            		h = a[h];	// 变成指向的下一个数
            	}
            	cout << h;	// 最后别漏了
            	return 0;
            }
            
            • @ 2024-11-27 16:58:47
              #include <bits/stdc++.h>
              using namespace std;
              int n, h;
              int a[1000005];
              int main()
              {
              	cin >> n;
              	for (int i = 1; i <= n; i++)
              	{
              		cin >> a[i];
              	}
              	cin >> h;
              	cout << h << " ";
              	for(int i = 1; i < n; i++)//小于n, 因为0不用输出 
              	{
              		h = a[h];
              		cout << h << " ";
              	}
              	return 0;
              }
              //6
              //4 6 0 2 3 5
              //1
              //1 4 2 6 5 3
              
          • -5
            @ 2023-12-5 13:27:28
            #include<iostream>
            using namespace std;
            int main(){
            	int n;
            	cin
            	>>n;
            	int a[n+1];
            	for(int i=1;i<=n;i++)
            	cin
            	>>a[i];
            	int head;
            	cin
            	>>head;
            	int p=head;
            	while(a[p]!=0){
            		cout
            		<<p
            		<<" ";
            		p=a[p];
            	}
            	cout
            	<<p;
            }
            
            • 1

            Information

            ID
            943
            Time
            1000ms
            Memory
            128MiB
            Difficulty
            5
            Tags
            # Submissions
            75
            Accepted
            29
            Uploaded By