zoukankan      html  css  js  c++  java
  • 开宝箱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;

    }
    }

    }

  • 相关阅读:
    P4141 消失之物(退背包模板)
    P5829 【模板】失配树
    P4827 [国家集训队] Crash 的文明世界
    P4074 [WC2013]糖果公园
    P3242 [HNOI2015]接水果
    P2371 [国家集训队]墨墨的等式
    P4819 [中山市选]杀人游戏
    P5331 [SNOI2019]通信
    BZOJ1082 [SCOI2005]栅栏
    poj1475 Pushing Boxes[双重BFS(毒瘤搜索题)]
  • 原文地址:https://www.cnblogs.com/zhouweibaba/p/10199488.html
Copyright © 2011-2022 走看看