首页 > 其他分享 >P1196 [NOI2002] 银河英雄传说

P1196 [NOI2002] 银河英雄传说

时间:2022-12-31 11:25:30浏览次数:57  
标签:fx get int fy num fa 银河 NOI2002 P1196

P1196 [NOI2002] 银河英雄传说

题目简述

  1. M i j:\(i\) 和 \(j\) 是两个整数(\(1 \le i,j \le 30000\)),将 \(i\) 和 \(j\) 合并

  2. C i j:\(i\) 和 \(j\) 是两个整数(\(1 \le i,j \le 30000\)),询问 \(i\) 和 \(j\) 是否在同一列,若是输出 \(i\) 和 \(j\) 之间距离,不是则输出 \(-1\)。


思路

非常经典的一道并查集题目,很好地加深对并查集的理解,因为正常操作下并查集的 \(fa[i]\) 都只是存了祖先,而中间的路径都被压缩了,所以在这题可以通过递归实现对祖先距离的不断更新依次来达到对中间的一个记录过程

具体思路


代码

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int fa[N],dis[N],num[N];//num[i]以i为开头的队列长度,dis[i]i距离i所在队列开头的长度
int get_fa(int x){
  if(x==fa[x])return x;
  int fx=get_fa(fa[x]);
  dis[x]+=dis[fa[x]];
  return fa[x]=fx;
}
void Merge(int x,int y){
  int fx=get_fa(x),fy=get_fa(y);
  fa[fx]=fy;
  dis[fx]+=num[fy];
  num[fy]+=num[fx];
  num[fx]=0;
  return ;
}
int main(){
  freopen("1196.in","r",stdin);
  freopen("1196.out","w",stdout);
  int t;
  cin>>t;
  for(int i=1;i<=3e5;i++){
    fa[i]=i;
    num[i]=1;
    dis[i]=0;
  }
  while(t--){
    char op;
    cin>>op;
    switch(op){
      case 'M':{
        int x,y;
        cin>>x>>y;
        Merge(x,y);
        break;
      }
      case 'C':{
        int x,y;
        cin>>x>>y;
        int fx=get_fa(x),fy=get_fa(y);
        if(fx!=fy)puts("-1");
        else cout<<abs(dis[x]-dis[y])-1<<endl;
        break;
      }
    }
  }
  //cout<<dis[2]<<' '<<dis[4]<<endl;
  return 0;
}

标签:fx,get,int,fy,num,fa,银河,NOI2002,P1196
From: https://www.cnblogs.com/fleabag/p/17016318.html

相关文章

  • 银河麒麟V10检查重要目录或文件/etc/rc0,d权限设置
    银河麒麟V10检查重要目录或文件权限设置,/etc/rc0.d/、/etc/rc1.d、/etc/rc2.d、/etc/rc3.d、/etc/rc4.d、/etc/rc5.d、/etc/rc6.d、/etc/rc.d/init.d/、这些目录跟系统启动......
  • 银河麒麟系统输入正确用户名密码重新跳转到登录界面
    银河麒麟系统输入正确用户名密码重新跳转到登录界面問題:麒麟操作系统图形界面登录闪退,或输入正确用户名密码重新跳转到登录界面問題分析:1、磁盘原因:可能”/”分区被占......
  • 初学银河麒麟linux笔记 第九章 QEMU安装arm虚拟机
    arm虚拟机无法用vm进行安装,因此需要安装QEMU虚拟机参考: WIndows下使用Qemu安装Arm版Kylin系统_h1007886499的博客-CSDN博客_windowsqemuarm win10系统下利用QEMU安......
  • 摘抄:银河帝国2-基地与帝国
    心理史学的预测(谢顿计划)控制不了时代中的突发情况,第一基地沦陷。骡的出现只是影响因素中很简陋的一个武器,谢顿计划就被击溃了。谢顿原始假设:第一,在未来一千年间,人类社会并......
  • 银河系中心黑洞的首张照片
    说到黑洞,那就不得不提起我们的家园银河系中心的大黑洞,在今天这张照片出来之前,所有关于银河系黑洞的描述都是推测、理论,而今天成为了现实!2019年,同一团队拍摄了梅西耶87星系(M8......
  • Windows上使用QEMU创建银河麒麟ARM64虚拟机完全手册
    “好记性不如烂笔头。”——张溥0x00大纲目录0x00大纲0x01前言0x02物料准备0x03安装QEMU0x04创建虚拟磁盘0x05安装麒麟系统0x06启动和使用虚拟机启动脚本调......
  • 洛谷P1196 [NOI2002] 银河英雄传说
    slojP2577.食物链题目大意一个序列初始编号为1,2,3,,,30000有2个操作:mij合并第i列和第j列,将第i列头部接到第j列尾部cIj询问i号和j号之间的数量,若......
  • 银河麒麟系统连接打印机常见问题
    1打印测试页相关问题(1)如果打印测试页的时候,出现白纸、乱码、出多张纸等现象,则表示打印机驱动不匹配,可选择其他兼容驱动。(2)如果在添加打印机的时候,选择推荐的驱动打印测......
  • 长城主机要银河麒麟系统链接惠普打印机(USB)
    从菜单中打开终端程序,使用命令安装hp打印机程序。sudoaptinstallhpliphplip-gui然后输入密码,注意此时键入密码屏幕不会有任何提示,输入完成后按回车键即可。然后运行......
  • 银河麒麟V10 SP1系统激活教程
    激活方法:1.在旧系统查看备份自己的服务序列号:我的电脑右击查看或者桌面打开终端输入cat/etc/.kyinfo [servicekey]key=就是你的服务序列号)2.输入命令cat/etc/.ky......