一个简单的搜索;

反正树的结构不会变,只需要把节点的名称换一下就行;

可惜比赛的时候思路不清晰;

 #include<cstdio>
#define maxn 5050
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
int age[maxn];
int biao[maxn];
bool vis[maxn];
vector<int>ve[maxn],pa[maxn];
char s[];
int ans;
void dfs(int x,int v)
{
vis[x]=;
pa[v].push_back(x);
int l=ve[x].size();
for(int i=;i<l;i++)
{
if(vis[ve[x][i]])continue;
dfs(ve[x][i],v);
}
} int main()
{
// freopen("data.in","r",stdin);
int n,m,q,x,y;
while(scanf("%d%d%d",&n,&m,&q)!=EOF)
{
for(int i=;i<=n;i++){ve[i].clear(),pa[i].clear();}
for(int i=;i<=n;i++)biao[i]=i;
for(int i=;i<=n;i++)scanf("%d",&age[i]);
for(int i=;i<m;i++)
{
scanf("%d%d",&x,&y);
ve[y].push_back(x);
}
for(int i=;i<=n;i++)
{
memset(vis,,sizeof vis);
vis[i]=;
int l=ve[i].size();
for(int j=;j<l;j++)
if(!vis[ve[i][j]])dfs(ve[i][j],i);
}
for(int i=;i<q;i++)
{
scanf("%s",s);
if(s[]=='T')
{
scanf("%d%d",&x,&y);
swap(age[biao[x]],age[biao[y]]);
swap(biao[x],biao[y]);
}
else
{
ans=;
scanf("%d",&x);
x=biao[x];
int l=pa[x].size();
for(int j=;j<l;j++)ans=min(ans,age[pa[x][j]]);
if(ans==)puts("*");
else printf("%d\n",ans);
}
}
}
return ;
}

uva 12648的更多相关文章

  1. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  2. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  3. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  4. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  5. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

  6. UVA数学入门训练Round1[6]

    UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...

  7. UVA - 1625 Color Length[序列DP 代价计算技巧]

    UVA - 1625 Color Length   白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束   和模拟赛那道环形DP很想,计算这 ...

  8. UVA - 10375 Choose and divide[唯一分解定理]

    UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  9. UVA - 11584 Partitioning by Palindromes[序列DP]

    UVA - 11584 Partitioning by Palindromes We say a sequence of char- acters is a palindrome if it is t ...

随机推荐

  1. MSP430电平转换

    说道到这个电平转换,写程序的时候居然还要示波器来观察现象,表示我们交的是211的学费,上的却不是211大学,创新实验室的仪器设备真的是少的可怜啊,我级不吐槽了说说这个电平转换的一些知识还有看法吧.. ...

  2. ReentrantLock和synchronized的区别

    一.ReentrantLock类 ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票.定时锁等候和可中断锁等候的一些特性 ...

  3. 浅谈SqlCommand

    初学asp.net 的菜鸟应该都会像我一样想尝试一下前后台的交互吧!特别是与数据库的交互.下面就来说一下自己的个人经历. SqlCommand 首先需要引入system.Date.SqlClient命 ...

  4. media type和media query

    media type media type是CSS2的重要属性,通过它,可以针对不同的设备指定不同的样式.   media type种类:   用法: <link href="styl ...

  5. ORCAL

    select name from v$database;--查询当前数据库名: select instance_name from v$instance;--查询当前数据库实例名 select def ...

  6. Delphi推出Delphi XE4支持IOS开发

    Delphi 新推出 Delphi XE4 ,这是一个支持 iOS 应用开发的新版本.Delphi XE4 带来 Embarcadero 全新的 ARM 编译器 下载地址

  7. C#学习笔记3:提示“截断字符串或二进制数据”错误解决方法

    1.调试程序如出现“截断字符串或二进制数据”的关于数据库的错误,可以先试一试修改数据库中字符定义的长度. 2.使用ManualResetEvent前需导入 命名空间System.Threading; ...

  8. web框架--来自维基百科

  9. Android系统中的dp和px的转换

    android系统中DP和SP的转化:1.首先分析TypedValue.java 可以调用以下代码获得dp的值 TypedValue.applyDimension(TypedValue.COMPLEX ...

  10. Linux系统各发行版镜像下载(2)

    Fedora ISO镜像下载: Fedora 是一个开放的.创新的.前瞻性的操作系统和平台,基于 Linux.它允许任何人自由地使用.修改和重发布,无论现在还是将来.它由一个强大的社群开发,这个社群的 ...