zoukankan      html  css  js  c++  java
  • [vijos P1034] 家族

    寒假给自己定的第一个目标就是把并查集,Tarjan之类搞会。翻了翻笔记,发现并查集是2012年的6月30日学的…早就忘光了…今天敲题目的时候也吃了不少的亏呢…

    家族这一题就是并查集的标准题,第一次提交失误了,我的union子过程莫名陷入了死循环,我的f数组存在死循环,最后发现是find函数有个bug…

    我又跑去参考NOCOW了,只是觉得一直参考标程不是太好,毕竟比赛的时候得独立debug是吧…

    核心代码就是union子过程和find函数了,其实也没什么技术含量,思路比较要紧。过会儿去研究下,这个算法貌似还有什么优化来着~

    program vijos_p1034;
    var f:array[1..5000] of integer;
        i,j,n,p,m,mi,mj,li,lj,pi,pj:integer;
    function find(x:integer):integer;
    var t:integer;
    begin
      if f[x]=x then exit(x) else f[x]:=find(f[x]);
      exit(f[x]);
    end;
    
    procedure union(x,y:integer);
    var fx,fy:integer;
    begin
      fx:=find(x);
      fy:=find(y);
      if fx<>fy then f[fx]:=fy;
    end;
    
    begin
      readln(n,m,p);
      for i:=1 to n do
        f[i]:=i;
      for i:=1 to m do
        begin
          readln(mi,mj);
          union(mi,mj);
        end;
      for i:=1 to p do
        begin
          readln(pi,pj);
          li:=find(pi);
          lj:=find(pj);
          if li=lj then writeln('Yes') else writeln('No');
        end;
    end.
    家族
  • 相关阅读:
    第二次冲刺周期站立会议(3)
    第二次冲刺周期站立会议(2)
    第二次冲刺周期站立会议(1)
    测试计划
    对各组第一次冲刺周期的评价
    团队绩效评估计划
    学校网站UI设计分析
    站立会议(10)
    Bower和Gulp集成前端资源
    Laravel的学习网站推荐
  • 原文地址:https://www.cnblogs.com/Sky-Grey/p/vijos.html
Copyright © 2011-2022 走看看