#include<bits/stdc++.h>
using namespace std;
inline void read(int &tmp)
{
int x=;char c=getchar();
for(tmp=;!isdigit(c);c=getchar()) if(c=='-') x=-;
for(;isdigit(c);tmp=tmp*+c-,c=getchar());
tmp*=x;
}
const int maxn=;
const int maxm=;
const int INF=0x3f3f3f3f;
struct node{//并查集
int val,fa;//val- 权值(时间)
}f[maxn];
struct data{//链表
int l,r;
}my_list[maxn];
struct edge{//存边
int f,s;//f-编号 s-左右手
}e[maxn];
bool del[maxn][];//标记已删除的边
int find(int x)
{
if(f[x].fa==x) return x;
int root=find(f[x].fa);
f[x].val=min(f[x].val,f[f[x].fa].val);//不断更新最小值
return f[x].fa=root;
}
void Union(int x,int y,int z)//用并查集在x和y之间连一条权值为z的边
{
x=find(x),y=find(y);
if(x==y) return;
if(x==) f[y].fa=x,f[y].val=z;//默认1号为根节点
else f[x].fa=y,f[x].val=z;
}
int n,m;
int main()
{
read(n),read(m);
for(int i=;i<=n;i++) f[i].fa=i,f[i].val=INF;//初始化
for(int i=;i<=n;i++) read(my_list[i].l),read(my_list[i].r);
for(int i=;i<=m;i++)
{
read(e[i].f);read(e[i].s);//读入边
del[e[i].f][e[i].s]=true;//标记已删除
}
for(int i=;i<=n;i++)//将最后连在一起的猴子并在一起
{
if(!del[i][]&&my_list[i].l!=-) Union(i,my_list[i].l,INF);
if(!del[i][]&&my_list[i].r!=-) Union(i,my_list[i].r,INF);
}
for(int i=m;i>=;i--)//倒序处理
{
if(e[i].s==&&my_list[e[i].f].l!=-) Union(e[i].f,my_list[e[i].f].l,i-);
if(e[i].s==&&my_list[e[i].f].r!=-) Union(e[i].f,my_list[e[i].f].r,i-);
}
for(int i=;i<=n;i++)
{
find(i);//路径压缩 更新权值
printf("%d\n",f[i].val==INF?-:f[i].val);
}
return ;
}

洛谷P1653 猴子的更多相关文章

  1. 洛谷 P1653 猴子 解题报告

    P1653 猴子 题目描述 有N只猴子,第一只尾巴挂在树上,剩下的N-1只,要么被其他的猴子抓住,要么抓住了其他的猴子,要么两者均有.当然一只猴子最多抓两只另外的猴子.现在给出这N只猴子抓与被抓的信息 ...

  2. 【洛谷 P1653】 猴子 (并查集)

    题目链接 没删除调试输出,原地炸裂,\(80\)->\(0\).如果你要问剩下的\(20\)呢?答:数组开小了. 这题正向删边判连通性是很不好做的,因为我们并不会并查集的逆操作.于是可以考虑把断 ...

  3. 洛谷 P1653 == COGS 2043 猴子

    P2107 可爱的猴子 时间限制:1000MS  空间限制:65535KB 问题描述: 树上有n只猴子.它们编号为 1 到n.1 号猴子用它的尾巴勾着树枝.剩下的猴子都被其他的猴子用手抓着.每只猴子的 ...

  4. 洛谷 P2504 [HAOI2006]聪明的猴子

    洛谷 P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水 ...

  5. 洛谷P1456Monkey King

    洛谷P1456 Monkey King 题目描述 Once in a forest, there lived N aggressive monkeys. At the beginning, they ...

  6. 【LGR-(-8)】洛谷入门赛 #5 题解

    比赛链接 9道题. 注:题目名称中链接为题目链接,题号中链接为比赛内链接 题目编号 洛谷题号 题目名称 题目难度 A P5713 [深基3.例5]洛谷团队系统 \(\color{red}{入门}\) ...

  7. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  8. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  9. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

随机推荐

  1. spring cloud深入学习(五)-----熔断器Hystrix

    雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者” ...

  2. ES6 promise 封装http请求

    今天研究了一下同事封装的http请求,用的是promise. 大结构是: const __fetch = (url, data = {}, config = {}) => { let param ...

  3. 学习JDK1.8集合源码之--LinkedHashMap

    1. LinkedHashMap简介 LinkedHashMap继承自HashMap,实现了Map接口. LinkedHashMap是HashMap的一种有序实现(多态,HashMap的有序态),可以 ...

  4. git中的错误

    ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'git@gitee.co ...

  5. WebSocket前后端实现

    websocket.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  6. python之pip

    sudo vim /usr/bin/lsb_release 确保第一行是python2.7,不然无法使用pip安装第三方依赖

  7. python中的True和False

    返回真假时,需要为: return True return False

  8. python实现六大分群质量评估指标(兰德系数、互信息、轮廓系数)

    python实现六大分群质量评估指标(兰德系数.互信息.轮廓系数) 1 R语言中的分群质量--轮廓系数 因为先前惯用R语言,那么来看看R语言中的分群质量评估,节选自笔记︱多种常见聚类模型以及分群质量评 ...

  9. python实现统计字符类型

    #字符串处理统计类型def my_func(*str): list_num = [] list_big = [] list_small = [] list_qt = [] str = input('请 ...

  10. docker.[5] 网络配置-1

    docker[5] 网络配置-1 执行 ifconfig 可以看到有一个 docker01 ,这个其实就是容器的虚拟网桥,在执行指令:brctl show(如果该指令不能执行,请先安装: yum -y ...