PTA_2021年团体程序设计天梯赛_总决赛_L2-4 哲哲打游戏 (25 分)_搞心态_简单模拟

//
输出格式:
对于每个 1(即存档)操作,在一行中输出存档的剧情点编号。

最后一行输出哲哲最后到达的剧情点编号。

输入样例:
10 11
3 2 3 4
1 6
3 4 7 5
1 3
1 9
2 3 5
3 1 8 5
1 9
2 8 10
0
1 1
0 3
0 1
1 2
0 2
0 2
2 2
0 3
0 1
1 1
0 2
输出样例:
1
3
9
10
样例解释:
简单给出样例中经过的剧情点顺序:

1 -> 4 -> 3 -> 7 -> 8 -> 3 -> 5 -> 9 -> 10。

档位 1 开始存的是 1 号剧情点;档位 2 存的是 3 号剧情点;档位 1 后来又存了 9 号剧情点。

// L2-4 哲哲打游戏 (25 分)
#include<bits/stdc++.h>
using namespace std;

const int N=1e5+6;
vector<int> v[N];   // plot
int file[111];

void init()
{
    memset( file,0,sizeof( file ) );
    for( int i=0;i<N;i++ ) v[i].clear();
}

int main()
{
    int n,m,i,j,now,k,x,op;

    while( cin>>n>>m )
    {
        init();
        for( i=1;i<=n;i++ )
        {
            cin>>k; v[i].push_back(k);

            while( k-- ) { cin>>x; v[i].push_back(x); }
        }
        now=1;

        while( m-- )
        {
            cin>>op>>j;
            if( op==0 )         now=v[now][j];
            else if( op==1 )    { file[j]=now; cout<<now<<endl; }
            else if( op==2 )    now=file[j];
        }
        cout<<now<<endl;
    }
    return 0;
}
// 剧情点

// 0 在当前剧情点做出了第 j 个选择
// 1 存档放在了第 j 个档位
// 2 读取了放在第 j 个位置的存档

// 所有操作或选择以及剧情点编号都从 1 号开始。
// 存档的档位不超过 100 个,编号也从 1 开始。

// 对于每个 1(即存档)操作,在一行中输出存档的剧情点编号。
// 最后一行输出哲哲最后到达的剧情点编号。

// 搞心态 认真理解就不难 

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/123689693