Pro
Sol
第一次做的时候没读懂题意,后来以为题目中的数据一定构成一个环,导致 WA W A 。其实不一定全部构成一个环,但是肯定是有环的,否则 k k 这么大的取值范围难道去枚举???先处理出环来,借助数组来表示这个环是从哪里开始哪里结束的。然后借助一个类似邻接表的东东,更新答案。对于这么大的 k k ,第一感觉就是取模啦,取模之前一定要减去前面不是环的部分啊,其他……就是模拟了。
Code
#include<iostream>
#include<cstdio>
using namespace std;
int no[1005][2] , f[1005] , vis[1005] , n , m , k , top , now = 1;
int main() {
scanf("%d%d%d",&n,&m,&k);
for(int i=1; i<=n; i++)
scanf("%d%d",&no[i][0],&no[i][1]);
for(int i=1; i<=m; i++) {
char ch;
cin>>ch;
if(ch == 'R')
f[i] = 1;
}
while(!vis[now]) {
vis[now] = ++top;
for(int i=1; i<=m; i++)
now = no[now][f[i]];
}
k -= (vis[now]-1);
k %= (top-vis[now]+1);
for(int i=1; i<=k; i++)
for(int j=1; j<=m; j++)
now = no[now][f[j]];
printf("%d",now);
return 0;
}