这道题应该算是并查集的小变形 ,我做完之后,一直tle,这下个我正纠结了,看一下别人的代码,发现合并很重要,节省很多时间,不用每次都回溯追了老远,譬如a[1]=3,a[3]=2直接变成a[1]=2这样成了很多时间 ,给自己的代码小改一下,A了

#include<iostream>
using namespace std;
int a[20005];
int w[20005];
int cou;
int ask(int x)
{
 if(a[x]!=x)
 {
  ask(a[x]);//用于回溯到顶点!!!!由顶点向回加,因为最后w[x]记录答案
     w[x]+=w[a[x]];//将路径值加一起  
  a[x]=ask(a[x]); //很主要,将路径合并,譬如a[1]=3,a[3]=2直接变成a[1]=2这样成了很多时间
 }
 return a[x];
}
int main()
{
 int cases,n;
 cin>>cases;
 int temp;
 char m;
 int x,y;
 while(cases--)
 {
  for(int i=0;i<20005;i++)
  {
   a[i]=i;
   w[i]=0;
  }
  cou=0;
  cin>>temp;
  while(cin>>m,m!='O')
  {
   if(m=='E')
   {
    cin>>x;
    ask(x);
    cout<<w[x]<<endl;
   }
   if(m=='I')
   {
    cin>>x>>y;
    a[x]=y;
    w[x]=abs(x-y)%1000;//初始化
   }
  }
 }
 return 0;
}

poj 1962 Corporative Network 并查集,很容易超时,大家要注意合并相关推荐

  1. UVA 1329 Corporative Network(并查集:路径压缩)

    UVA 1329 Corporative Network(并查集:路径压缩) 2014年03月09日 00:19:33 阅读数:914 UVA 1329 Corporative Network(并查集 ...

  2. POJ 2236 Wireless Network 并查集

    Wireless Network 并查集 Crawling in process... Crawling failed Time Limit:10000MS     Memory Limit:6553 ...

  3. POJ 2236 - Wireless Network ( 并查集 )

    题意 一个计算机网络里的计算机都坏了, 现在有两种操作, "O p"代表修复了p机器, "S p q"代表检查 p, q 两台机器是否连接( 直线距离<= ...

  4. CF-1023F.Mobile Phone Network(并查集缩点)

    CF-1023F.Mobile Phone Network(并查集缩点) 题目链接 题意 你手里有K条边还没有分配权值,已经存在M条边带权值,如何给你手中的边分配权值,使得K条边都在最后的最小生成树中 ...

  5. POJ 1182 食物链,并查集的拓展

    http://poj.org/problem?id=1182 /******************************************************** 此道题目 前天看的时候 ...

  6. Find them, Catch them POJ - 1703(种类并查集)

    题意: 在这个城市里有两个黑帮团伙,现在给出N个人,问任意两个人他们是否在同一个团伙 1.输入D x y代表x于y不在一个团伙里 2.输入A x y要输出x与y是否在同一团伙或者不确定他们在同一个团伙 ...

  7. POJ 1417 True Liars 并查集+背包

    题目链接:http://poj.org/problem?id=1417 解题思路:比较容易想到的是并查集,然后把第三组数据测试一下之后发现这并不是简单的并查集,而是需要合并之后然后判断的.并且鉴于题目 ...

  8. poj 1456 Supermarket 贪心+并查集(个人感觉有点难判断出来

    poj 1456 这第一眼还觉得只要贪心就可以了,但是emmm看了大佬的题解居然真的要用到并查集= = 大佬清晰的思路 大佬舒服的代码 #pragma warning(disable:4996) #i ...

  9. POJ 1611 The Suspects 并查集

    The Suspects Time Limit:1000MS     Memory Limit:20000KB     64bit IO Format:%lld & %llu Descript ...

  10. poj 3723 Conscription (并查集)

    1 首先我们应该区分开男孩和女孩,只要将男孩的编号加上女孩的个数n,这样就可以做到男孩和女孩的编号是不同的. 2 题目中说了如果两个人有关系,并且其中一个人已经被选了那么选择另外一个人的时候只要100 ...

最新文章

  1. SQL2000 N' '的意思
  2. 从零开始入门 K8s | 可观测性:你的应用健康吗?
  3. leetcode357. 计算各个位数不同的数字个数(回溯)
  4. 2021辽宁大洼高中高考成绩查询,2021大洼高中最后一跑——励志高考,逆袭人生...
  5. 黑盒测试和白盒测试_黑盒测试综合策略
  6. android卡机字符串,Android调用replace方法正则表达式卡死
  7. Maven基础篇之Maven实战入门-最新IDEA版maven
  8. OpenContrail 体系架构文档
  9. learning的反义词英文_英语反义词大全.
  10. 树莓派安装opencv3.4.3时缺少boostdesc等文件及一些常见的报错
  11. 软件保护技术 - 基础
  12. SCARA——OpenGL入门学习五六(三维变换、动画)
  13. android放微信短视频文件,参考微信实现的短视频录像
  14. 「大数据的关键思考系列」15:阿里巴巴的大数据实践(1)
  15. “外卖”----隐形非物质文化遗产
  16. 简易三国杀:儿童识字卡牌
  17. 计算机的硬盘 u盘启动,【电脑bios设置硬盘启动】电脑bios设置光驱启动_电脑bios设置u盘启动...
  18. 对 GoPro 应用程序摄像机连接的故障诊断
  19. 干货 | 心理学人电脑选购指南来了!
  20. Scrum 项目投资分析 - 如何计算投资回收期

热门文章

  1. 时间戳TimeStamp处理
  2. placeHolder 兼容所有浏览器
  3. 第三篇:命名空间namespace的用法
  4. mysql 各种字段取值范围 2009-12-23
  5. 机器学习单词记录--02章单变量相性回归
  6. Sitecore8.2 GeoIP - 在8.2的引擎盖下发生了什么?
  7. Java中简单Http请求
  8. 20165329 Java实验四 Android程序设计
  9. 升级openssh漏洞
  10. intellij idea 程序包不可见问题