思路:模拟移动即可,如果球落入洞中停止移动。注意:有可能第一个位置就是洞!!
AC代码
#include <cstdio>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <cstring>
#include <utility>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define eps 1e-10
#define inf 0x3f3f3f3f
#define PI pair<int, int>
typedef long long LL;
const int maxn = 1e6 + 5;
int hole[maxn], pos[maxn];
int main() {
int n, m, k;
while(scanf("%d%d%d", &n, &m, &k) == 3) {
memset(hole, 0, sizeof(hole));
memset(pos, 0, sizeof(pos));
int h;
for(int i = 0; i < m; ++i) {
scanf("%d", &h);
hole[h] = 1;
}
pos[1] = 1;
int ans = 1;
int x, y, flag = 0;
if(hole[1]) flag = 1;
for(int i = 0; i < k; ++i) {
scanf("%d%d", &x, &y);
if(flag) continue;
if(pos[x]) {
pos[x] = 0;
pos[y] = 1;
ans = y;
}
else if(pos[y]){
pos[y] = 0;
pos[x] = 1;
ans = x;
}
if(hole[ans]) flag = 1;
}
printf("%d\n", ans);
}
return 0;
}
如有不当之处欢迎指出!