C - Boss Gym - 101473C (模拟)
题目链接:https://cn.vjudge.net/contest/287775#problem/C
题目大意:给你n个人,然后m条关系,会有k次询问,每一次询问包括两种类型,第一种类型是交换两个人的位置,第二种类型是询问这个人的领导阶层年龄孙是多少、
具体思路:模拟题,我们建立好图之后,通过两个数组来记录当前这个人位置现在是多少。用一个数组是不行的,,举个例子,原来2这个位置变成了4,然后现在4的位置变成了2。如果这个时候要交换2和3,3指向的位置应该是4,而2指向的是3。第一个数组记录现在这个位置是哪个人在,第二个数字记录的是现在这个位置在原图上的位置,因为我们每一次的操作是在原图上进行的,。如果只是一个数组的话,第一次交换没有影响,第二次交换的时候就会有影响了。
father[2]=2.father[3]=3,father[4]=4;
交换3 4
father[2]=2,father[3=4,father[4]=3
交换2 3
father[2]=3,father[3]=2,father[4]=2
这样就有问题了,要连的这个点原来是多少。
AC代码:
#include<iostream>
#include<stack>
#include<stdio.h>
#include<algorithm>
#include<map>
#include<cmath>
#include<queue>
#include<cstring>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn =2e5+;
vector<int>q[maxn];
int age[maxn];
int father1[maxn];
int father2[maxn];
int vis[+];
int minn=inf;
void ask(int t,int val)
{
minn=min(minn,t==val?inf:age[father2[t]]);
for(int i=; i<q[t].size(); i++)
{
if(vis[q[t][i]])continue;
vis[q[t][i]]=;
ask(q[t][i],val);
}
}
int main()
{
int n,m,k;
scanf("%d %d %d",&n,&m,&k);
for(int i=; i<=n; i++)
{
scanf("%d",&age[i]);
father1[i]=i;
father2[i]=i;
}
int st,ed;
for(int i=; i<=m; i++)
{
scanf("%d %d",&st,&ed);
q[ed].push_back(st);
}
char str[];
while(k--)
{
memset(vis,,sizeof(vis));
scanf("%s",str);
if(str[]=='T')
{
scanf("%d %d",&st,&ed);
swap(father1[st],father1[ed]);
father2[father1[st]]=st;
father2[father1[ed]]=ed;
// cout<<1<<" "<<father1[1]<<" "<<father2[1]<<endl;
// cout<<2<<" "<<father1[2]<<" "<<father2[2]<<endl;
// cout<<3<<" "<<father1[3]<<" "<<father2[3]<<endl;
}
else if(str[]=='P')
{
minn=inf;
scanf("%d",&st);
ask(father1[st],father1[st]);
if(minn==inf)printf("*\n");
else
printf("%d\n",minn);
}
}
return ;
}
C - Boss Gym - 101473C (模拟)的更多相关文章
- Galactic Collegiate Programming Contest Gym - 101572G 模拟
#include<bits/stdc++.h> using namespace std; int n,m; struct node { int id; int slove; int pen ...
- Gym 100952B&&2015 HIAST Collegiate Programming Contest B. New Job【模拟】
B. New Job time limit per test:1 second memory limit per test:64 megabytes input:standard input outp ...
- 【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
题目链接: http://codeforces.com/gym/100825 题目大意: 栅栏密码.给定N(N<=10),密钥为一个N*N的矩阵,'.'代表空格可以看到,'X'代表被遮挡,还有密 ...
- 【模拟】NEERC15 G Generators(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: n个序列.每个序列有4个值x,a,b,c,之后按照x=(a*x+b)%c扩展无穷项. 求每个序列各取一个数之后 ...
- 【模拟】NEERC15 J Jump(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 系统里生成一个字符串C,一开始告诉你字符串的长度N(偶数).接着你需要在n+500次内猜出这个字符串是什么. ...
- 【模拟】NEERC15 E Easy Problemset (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: N个人,每个人有pi个物品,每个物品价值为0~49.每次从1~n顺序选当前这个人的物品,如果这个物品的价值&g ...
- 【模拟】NEERC15 A Adjustment Office (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 一个N*N的矩阵A,Ai,j=i+j,Q次操作,每次分两种,R r取出第r行还未被取的所有数,并输出和.C c ...
- 【模拟】BAPC2014 G Growling Gears (Codeforces GYM 100526)
题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...
- Gym 100952C&&2015 HIAST Collegiate Programming Contest C. Palindrome Again !!【字符串,模拟】
C. Palindrome Again !! time limit per test:1 second memory limit per test:64 megabytes input:standar ...
随机推荐
- 使用vcftools或者gcta计算群体间固定指数(Fixation index,FST)
下列所用到的数据均为千人基因组数据库 1.通过vcftools计算FST 命令行如下: ./vcftools --vcf input_data.vcf --weir-fst-pop populatio ...
- eclipse中如何复制用点分隔的全类名
结果: com.xxx..redis.service.JedisClient
- java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。
今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...
- Mock4 moco框架中如何加入cookies
新建一个 startupWithCookies.json,因为cookies也是请求当中带的,所以,要写在request里面,cookies是k-v的形式,就拿登陆来说吧,登陆以后会的cookies, ...
- Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies
传送门 https://www.cnblogs.com/violet-acmer/p/10035971.html 题意: Vova有n个奖杯,这n个奖杯全部是金奖或银奖,Vova将所有奖杯排成一排,你 ...
- JDBC批处理(Batch)MySQL中的表
在数据库test里先创建表school,内容如下 向school表中一次增加多行.addBatch,executeBatch import java.sql.Connection; import ja ...
- mysql优化好文
https://segmentfault.com/a/1190000006158186
- Altium Designer 17 ------ 多层板设计
Pullback:在内电层边缘设置一个去铜边界,以保证内电层边界距离PCB边缘有一个安全间距.
- RHCE基础环境系统的搭建
RHCE基础环境系统的搭建 安装前提: 安装的时候对系统和硬件的要求: 红帽系统安装队系统的要求:Windows操作系统选择64位的内存至少6GCPU需要支持虚拟化技术在做红帽系统实验的时候,把360 ...
- stock
version: 1 disable_existing_loggers: False formatters: simple: format: "%(asctime)s - %(name)s ...