题目链接:http://codeforces.com/contest/796/problem/B
题意:给你n个杯子,坐标从1到n,然后m个洞,坐标hi。然后交换k次杯子,交换的顺序告诉你。一开始骨头在1坐标处,在交换过程中,如果坐标x出是洞,那么骨头将会停留在洞中。问你最后骨头停留的坐标。。
分析:直接按照题意模拟就行了,只需要记住现在骨头在什么位置,是否在洞中。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int a[1000005]; 5 int b[1000005]; 6 int main() { 7 8 for(int i=1;i<=1000004;i++){ 9 b[i]=i; 10 } 11 int n,m,k; 12 scanf("%d%d%d",&n,&m,&k); 13 memset(a,0,sizeof(a)); 14 int zb; 15 for(int i=1;i<=m;i++){ 16 scanf("%d",&zb); 17 a[zb]=1; 18 } 19 int result=0; 20 int x,y,now=1; 21 int p=0; 22 for(int i=1;i<=k;i++){ 23 scanf("%d%d",&x,&y); 24 if(result==0){ 25 if(a[now]==1) { 26 result=now; 27 } 28 if(x==now){ 29 now=y; 30 } 31 else if(y==now){ 32 now=x; 33 } 34 } 35 } 36 if(result==0) cout<<now<<endl; 37 else cout<<result<<endl; 38 39 return 0; 40 }