按照题目模拟就可以了,不过注意用scanf() 不然会TLE
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e5+10;
vector<int> choose[N];//选择
int read[N];//存档
int n,m;
int main(void)
{
int st=1;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
int x; cin>>x;
for(int j=0;j<x;j++)
{
int a; scanf("%d",&a);
choose[i].push_back(a);
}
}
while(m--)
{
int op,k; scanf("%d%d",&op,&k);
if(op==0)
{
st=choose[st][k-1];
}
if(op==1)
{
read[k]=st;
printf("%d\n",st);
}
if(op==2)
{
st=read[k];
}
}
cout<<st<<endl;
return 0;
}