• 开宝箱2


    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()
    {
    int n,m;
    int t;
    int x;
    int y,z;
    int q;
    int u,v;
    scanf("%d%d",&n,&m);
    int a[100];
    int i;
    for(i=0;i<n;i++)
    {
    scanf("%d",&a[i]);
    }
    int j;
    int b[100][2];
    for(i=0;i<m;i++)
    for(j=0;j<2;j++)
    {
    scanf("%d",&b[i][j]);
    }

    scanf("%d",&t);
    while(t--)
    {
    scanf("%d",&q);
    if(q==1)
    {
    scanf("%d",&x);
    y=*(b[x-1]+0);
    z=*(b[y-1]+1);
    printf("%d ",a[z-1]);
    }
    else if(q==2)
    {
    scanf("%d%d%d",&x,&u,&v);
    *(b[x-1]+0)=u;
    *(b[x-1]+1)=v;

    }
    }

    }

  • 相关阅读:
    2020/3/21 简单的学习
    2020/3/7 A-B
    2020/3/6 旋转骰子
    2020/3/6 美丽数组
    面向对象程序设计寒假作业2
    自我介绍
    深度优先搜索-迷宫问题(走迷宫题解)
    开机方案题解
    好吃的巧克力题解
    数楼梯题解
  • 原文地址:https://www.cnblogs.com/zhouweibaba/p/10199488.html
Copyright © 2020-2023  润新知