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. Memcached服务器UDP反射放大攻击

    1.前言 2月28日,Memcache服务器被曝出存在UDP反射放大攻击漏洞.攻击者可利用这个漏洞来发起大规模的DDoS攻击,从而影响网络正常运行.漏洞的形成原因为Memcache 服务器UDP 协议 ...

  2. DRM/KMS 基本组件介绍

    Each DRM device provides access to manage which monitors and displays are currently used and what fr ...

  3. Tomcat实现多域名之间session共享

    最近启用二级域名后,面临一个主域名与二级域名之间 session 不能共享的问题,带来的麻烦就是用户在主域名登陆,但由于二级域名 session 不能共享 ,因此无法进行登陆的操作,对一些功能有一些影 ...

  4. cvpr densnet论文

  5. POJ 2195 Going Home(KM算法模板)

    题目链接:http://poj.org/problem?id=2195 题目大意: 给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致. man每移动一格需花费$1 ...

  6. Unix IPC之Posix消息队列(2)

    /* Query status and attributes of message queue MQDES. */ extern int mq_getattr (mqd_t __mqdes, stru ...

  7. nginx防止DDOS攻击

    防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈.DDOS的特点是分布式,针对带宽和服务攻击,也就是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构 ...

  8. mdb数据库文件如何导入Microsoft SQL Server 2008中

    1.在‘开始’菜单打开‘Microsoft SQL Server 2008→SQL Server Management Studio’. 2.新建一个数据库(名称自定义),选择新建的数据库点击右键选择 ...

  9. drools7 (二、agenda-group 的使用)

    几个关键点: 1. 如果没有指定agenda-group 则默认把所有未指定agenda-group的 rules 都执行一遍 2. 如果指定了agenda-group 使用的时候必须指定该name才 ...

  10. LogStash plugins-inputs-file介绍(三)

    官方文档 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html 重要参数: path # 文件路径 sin ...