Description

急先锋是一个商人,有一天找到了一个宝箱,宝箱需要正确的密码才能打开。同时他发现宝箱上有一个数字,和一份密码表。密码表上有n个密码,只有一个密码是正确的。

急先锋所在的岛上有m个地点,每个地点有两个神秘的数字。他通过交易得到每个地点上拥有的信息,也知道这个宝箱上的数字是一个地点的标号x。急先锋需要先到x号地点,x号地点上的第一个数字就是他要去的最终地点的标号,最终的地点上的第二个数字就是密码在密码表上的序号。急先锋想要知道打开这个宝箱的密码,聪明的你能不能直接告诉他呢?

Input

第一行两个数字n,m.(1<=n,m<=20)

接下来n个数字ai表示密码表上序号1到序号n的密码分别是多少。(1 <=ai<=100)

接下来m行每行两个数字u,v。(1 <= u<=m,1<= v <=n)

然后给你一个T,表示T次询问。(1<=T<= 20)

接下来的T行每行一个x,表示宝箱上的数字。(1<=x<=m)

Output

一共T行。每行一个数字表示最后的密码。

Sample Input

5 4
1 2 3 4 5
2 4
3 3
1 2
2 5
2
1
2

Sample Output

3
2
#include<stdio.h>
int main(void)
{
int n,m,x;
int T;
scanf("%d%d",&n,&m);
int i,j,k,v,p,a[],b[][];
for(p=;p<n;p++)
{
scanf("%d",&a[p]);
}
for(i=;i<m;i++)
for(j=;j<;j++)
{
scanf("%d",&b[i][j]);
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&x);
k=b[x-][];
v=b[k-][];
printf("%d\n",a[v-]);
}
return ;
}

Description

急先锋是一个商人,有一天找到了一个宝箱,宝箱需要正确的密码才能打开。同时他发现宝箱上有一个数字,和一份密码表。密码表上有n个密码,只有一个密码是正确的。

急先锋所在的岛上有m个地点,每个地点有两个神秘的数字。他通过交易得到每个地点上拥有的信息,也知道这个宝箱上的数字是一个地点的标号x。急先锋需要先到x号地点,x号地点上的第一个数字就是他要去的最终地点的标号,最终的地点上的第二个数字就是密码在密码表上的序号。

由于宝箱中的宝物价值太大。每过一段时间,有些地点上的数字将会发生变化。

急先锋想要知道打开这个宝箱的密码,聪明的你能不能直接告诉他呢?

Input

第一行两个数字n,m.(1<=n,m<=20)

接下来n个数字ai表示密码表上序号1到序号n的密码分别是多少。(1 <=ai<=100)

接下来m行每行两个数字u,v。(1 <= u<=m,1<= v <=n)

然后给你一个T,表示T次操作。(1<=T<= 20)

接下来的T行,每行的第一个数字op,表示第op种操作。

第1种操作:接下来有一个数字x,表示宝箱上的数字。(1<=x<=m)。

第2种操作:接下来有三个数字x,u,v,表示x号地点的数字改成u,v。

Output

每次执行第一种操作1后,输出一个数字表示最后的密码。(每个数字占1行)。

Sample Input

5 4
1 2 3 4 5
2 4
3 3
1 2
2 5
4
1 1
2 1 4 2
1 1
1 2

Sample Output

3
5
2
#include<stdio.h>
int main(void)
{
int n,m,x,q,w,op;
int T;
scanf("%d%d",&n,&m);
int i,j,k,v,p,a[],b[][];
for(p=;p<n;p++)
{
scanf("%d",&a[p]);
}
for(i=;i<m;i++)
for(j=;j<;j++)
{
scanf("%d",&b[i][j]);
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&op);
if(op==)
{
scanf("%d",&x);
k=b[x-][];
v=b[k-][];
printf("%d\n",a[v-]);
}
if(op==)
{
scanf("%d%d%d",&x,&q,&w);
b[x-][]=q;
b[x-][]=w;
}
}
return ;
}

某位大佬指针做法(开宝箱1)

#include<stdio.h>
#include<stdlib.h>
struct node{ int st,en,p; }b[];
int main()
{
int n,m,x[],T;
scanf("%d%d",&n,&m);
int i,j,a[],*p[],**pp[];
for(i=;i<=n;i++)
scanf("%d",&a[i]);
for(i=;i<=m;i++)
{
scanf("%d%d",&b[i].st,&b[i].en);
b[i].p=i;
}
for(i=;i<=m;i++)
{
pp[i]=&p[b[i].st];
p[b[i].st]=&a[b[b[i].st].en];
}
scanf("%d",&T);
for(i=;i<T;i++)
scanf("%d",&x[i]);
for(i=;i<T;i++)
printf("%d\n",**pp[x[i]]);
return ;
}

Problem A&B: 开宝箱 1/2 (最沙雕的做法)(未用指针做) 改:附上一种指针做法的更多相关文章

  1. Codeforces Global Round 2 D. Frets On Fire (动态开点线段树,沙雕写法)

    题目链接:D. Frets On Fire 思路:明明可以离散化+二分写,思路硬是歪到了线段树上,自闭了,真实弟弟,怪不得其他人过得那么快 只和查询的区间长度有关系,排完序如果相邻的两个点的差值小于等 ...

  2. Problem D: 来开个书店吧

    某出版社可出版图书和磁带.其中图书按照每页的价格乘以页数进行定价,磁带根据每10分钟的价格乘以磁带录音的分钟数进行定价.请定义Publicatioin.Book.Tape以及BookStore四个类. ...

  3. HDU 1000 A + B Problem(指针版)

    A + B Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. Atitit.java c++指针使用总结O7

    Atitit.java c++指针使用总结O7 1. 指针的本质 1 2. 指针的作用 1 1. 提升性能问题这常常用于遍历数组, 1 2. 计算两个指针的的距离 2 3. 避免栈溢出,创建动态数据结 ...

  5. C语言面试题分类->指针

    有关指针的经典面试题 C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的 ...

  6. c刷题

    1.转义字符: C中定义了一些字母前加 "\" 来表示常见的那些不能显示的ASCII字符,如\0 空字符,\r 回车, \n换行等,就称为转义字符,因为后面的字符,都不是它本来的A ...

  7. 【Git】简单使用

    [Git & Github] 首先不能混淆两者的概念.git是一个类似于svn的版本管理工具.其可以在本地建立起针对一个项目的众多维度的版本管理体系,提升了开发的效率. 相对的,我们如果想要和 ...

  8. 【转】c++面试基础

    1,关于动态申请内存 答:内存分配方式三种: (1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在. 全局变量,static变量. (2)在栈上创建:在执行函 ...

  9. C++003基础

    1.C++对C的扩展 1简单的C++程序 1.1求圆的周长和面积 数据描写叙述: 半径.周长,面积均用实型数表示 数据处理: 输入半径 r. 计算周长 = 2*π*r : 计算面积 = π* r2 . ...

随机推荐

  1. Django Rest Framework----ModelViewSet视图 ModelViewSet源码分析

    一.视图类 #bookview是一个视图类,继承自ModelViewSet class BookView(ModelViewSet): throttle_classes = [VisitThrottl ...

  2. Vue.js 基础快速入门

    Vue.js是一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.Vue.js提供了简洁.易于理解的API,使得我们能够快速地上手并使用Vue.js 如果之前已经习惯了用jQue ...

  3. JavaScript 中的回调函数

    原文:http://javascriptissexy.com/ 翻译:http://blog.csdn.net/luoweifu/article/details/41466537 [建议阅读原文,以下 ...

  4. NopCommerce 执行计划任务不同Services协调操作导致更新数据失败的问题!

    问题描述: 在Nop的计划任务里需要两个任务协调操作 _shipmentService.InsertShipment(shipment); _orderProcessingService.Ship(s ...

  5. servlet 学习笔记(三)

    同一用户的不同页面共享数据有以下四种方法: 1.sendRedirect()跳转 2.session技术 3.隐藏表单提交(form) 4. cookie技术(小甜饼) --------------- ...

  6. 配置toad远程连接oracle

    在oracle服务器上: C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN目录 文件:listener.ora(10.144.118 ...

  7. HBase(八)HBase的协处理器

    一.协处理器简介 1. 起源 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hbase 中,统计数 ...

  8. Web前端开发最佳实践(10):JavaScript代码不好读,不好维护?你需要改变写代码的习惯

    前言 这篇文章本应该在上一篇文章:使用更严格的JavaScript编码方式,提高代码质量之前发布,但当时觉得这篇文章太过基础,也就作罢.后来咨询了一些初级的开发者,他们觉得有必要把这篇文章也放上来.尽 ...

  9. 基于Json.NET自己实现MVC中的JsonValueProviderFactory

    写了博文ASP.NET MVC 3升级至MVC 5.1的遭遇:“已添加了具有相同键的项”之后,继续看着System.Web.Mvc.JsonValueProviderFactory的开源代码. 越看越 ...

  10. LoadRunner参数化取值与连接数据库

    LoadRunner参数化取值与连接数据库   LoadRunner在使用参数化的时候,通常都是需要准备大数据量的,也因此LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接 ...