#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 ;
}

最新文章

  1. JavaScript判断各浏览器CSS前缀的两种方式
  2. PRINCE2七大原则
  3. 基于ssh框架开发的购物系统的质量属性
  4. LINUX_source
  5. MySQL 添加列,修改列,删除列
  6. 浅谈qmake之pro、pri、prf、prl文件
  7. Flask+Mysql搭建网站之安装Mysql
  8. Android 读取和保存文件(手机内置存储器)
  9. HTML元素分类:块级元素 内联元素和内联块状元素
  10. [html5] 学习笔记-Canvas应用
  11. java二进制相关基础
  12. How to use GitHub with Android Studio
  13. ●POJ 3237 Tree
  14. ubuntu下安装mongodb
  15. springboot学习小记
  16. linux 删除占用文件
  17. 最简单的设计模式——单例模式的演进和推荐写法(Java 版)
  18. 怎么查看自己电脑的IP地址
  19. ConstraintLayout使用手册
  20. C#中的集合(HashTable与Array类)【转】

热门文章

  1. Axure 工具的使用
  2. Jan&#39;s light oj 01--二分搜索篇
  3. Java review-design pattern
  4. 8天入门wpf—— 第四天 模板
  5. ObservableCollection类
  6. 利用javafx编写一个时钟制作程序
  7. 学习线程池源码--ScheduledThreadPoolExecutor
  8. CenOS SSH无密码登录
  9. DLedger —基于 raft 协议的 commitlog 存储库
  10. golang字符串常用系统函数