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

    Description
    神校XJ之学霸兮,Dzy皇考曰JC。
    摄提贞于孟陬兮,惟庚寅Dzy以降。
    纷Dzy既有此内美兮,又重之以修能。
    遂降临于OI界,欲以神力而凌♂辱众生。
     
    今Dzy有一魞歄图,其上有N座祭坛,又有M条膴蠁边。
    时而Dzy狂WA而怒发冲冠,神力外溢,遂有K条膴蠁边灰飞烟灭。
    而后俟其日A50题则又令其复原。(可视为立即复原)
    然若有祭坛无法相互到达,Dzy之神力便会大减,于是欲知其是否连通。
    Input
    第一行N,M
    接下来M行x,y:表示M条膴蠁边,依次编号
    接下来一行Q
    接下来Q行:
    每行第一个数K而后K个编号c1~cK:表示K条边,编号为c1~cK
    为了体现在线,K以及c1~cK均需异或之前回答为连通的个数
    Output
    对于每个询问输出:连通则为‘Connected’,不连通则为‘Disconnected’
    (不加引号)
    Sample Input
    5 10
    2 1
    3 2
    4 2
    5 1
    5 3
    4 1
    4 3
    5 2
    3 1
    5 4
    5
    1 1
    2 7 0 3
    6 0 7 4 6
    1 2 7
    0 5 0 2 13
    Sample Output
    Connected
    Connected
    Connected
    Connected
    Disconnected
    HINT

    HINT

    N≤100000 M≤500000 Q≤50000 1≤K≤15

    数据保证没有重边与自环

    Tip:请学会使用搜索引擎

    无聊写了这道伪在线题

    因为我们通过计算这一行有多少个数字可以得到每次的k,xor之后得到以前说联通的次数,最后一个暴力并查集就行了

     1 const
     2     maxn=100100;
     3     maxm=500500;
     4 var
     5     x,y,e:array[0..maxm]of longint;
     6     f:array[0..maxn]of longint;
     7     n,m,q,last:longint;
     8  
     9 function find(x:longint):longint;
    10 begin
    11     if f[x]=x then exit(x);
    12     f[x]:=find(f[x]);
    13     exit(f[x]);
    14 end;
    15  
    16 procedure main;
    17 var
    18     i,cnt,k:longint;
    19 begin
    20     read(n,m);
    21     for i:=1 to m do
    22         read(x[i],y[i]);
    23     readln(q);readln;
    24     for i:=1 to q-1 do
    25         begin
    26             read(k);cnt:=0;
    27             while not seekeoln do
    28                 begin
    29                     inc(cnt);
    30                     read(e[cnt]);
    31                 end;
    32             readln;
    33             k:=k xor cnt;
    34             if k>last then
    35                 writeln('Connected')
    36             else
    37                 writeln('Disconnected');
    38             last:=k;
    39         end;
    40     for i:=1 to cnt do e[i]:=e[i] xor k;
    41     for i:=1 to n do f[i]:=i;
    42     for i:=1 to cnt do y[e[i]]:=x[e[i]];
    43     for i:=1 to m do
    44         if find(x[i])<>find(y[i]) then f[f[x[i]]]:=f[y[i]];
    45     for i:=1 to n-1 do
    46         if find(i)<>find(i+1) then
    47         begin
    48             writeln('Disconnected');
    49             exit;
    50         end;
    51     writeln('Connected');
    52 end;
    53  
    54 begin
    55     main;
    56 end.
    View Code
  • 相关阅读:
    【BZOJ4517】[SDOI2016] 排列计数(组合数)
    【BZOJ4818】[SDOI2017] 序列计数(矩乘水题)
    【BZOJ4872】[SHOI2017] 分手是祝愿(思维+动态规划)
    【BZOJ4821】[SDOI2017] 相关分析(线段树)
    【BZOJ2710】[Violet 1] 追风者(计算几何)
    【BZOJ3199】[SDOI2013] escape(半平面交+BFS)
    【BZOJ1007】[HNOI2008] 水平可见直线(几何)
    【BZOJ3689】异或之(可持久化Trie树)
    【BZOJ3261】最大异或和(可持久化Trie树水题)
    NOI Online #3 提高组 小记
  • 原文地址:https://www.cnblogs.com/Randolph87/p/3789537.html
Copyright © 2011-2022 走看看