zoukankan      html  css  js  c++  java
  • BZOJ3563 : DZY Loves Chinese

    想法题,由于K是加密的,但是通过读入我们可以自己数出来这一行有几个数,

    所以可以直接反解出之前回答为连通的个数

    至于最后一个询问就用并查集暴力回答

    var
      n,i,m,s,k,j,q : longint;
      u,v,cnt,f : array[0..500000] of longint;
      c : array[1..15] of longint;
      del : array[1..500000] of boolean;
    function fa(x : longint) : longint;
    begin
      if f[x] = x then exit(x);
      f[x] := fa(f[x]);
      exit(f[x]);
    end;
    begin
      readln(n,m);
      for i := 1 to m do readln(u[i],v[i]);
      readln(q);
      for i := 1 to q do
      begin
        read(s);
        k := 0;
        while not eoln do
        begin
          inc(k);
          read(c[k]);
        end;
        cnt[i-1] := k xor s;
        readln;
      end;
      for i := 1 to q-1 do
        if cnt[i] = cnt[i-1] then
          writeln('Disconnected')
        else
          writeln('Connected');
      for i := 1 to k do del[c[i] xor cnt[q-1]] := true;
      for i := 1 to n do f[i] := i;
      for i := 1 to m do
        if not del[i] then
          if fa(u[i]) <> fa(v[i]) then
          begin
            f[f[u[i]]] := f[v[i]];
            dec(n);
          end;
      if n > 1 then
        writeln('Disconnected')
      else
        writeln('Connected');
    end.
    

      

  • 相关阅读:
    [TJOI2015]棋盘
    [FJOI2017]矩阵填数——容斥
    [ZJOI2016]小星星
    [HEOI2013]SAO ——计数问题
    ZJOI2008 骑士
    莫队算法——暴力出奇迹
    可持久化线段树
    dij与prim算法
    LCA 最近公共祖先
    Linux 设置交换分区
  • 原文地址:https://www.cnblogs.com/clrs97/p/4403246.html
Copyright © 2011-2022 走看看