Untitled

 avatar
unknown
pascal
4 years ago
2.0 kB
15
Indexable
type mang=array[1..1000005] of longint;
var f1,f2:text;
    n,k,i,j,x,c,ans:longint;
    a:array[1..1000005] of longint;  //Danh sach ke
    cs:array[0..100000] of longint;
    check:array[0..100000] of boolean;
    kq:array[1..1000005] of longint;
procedure sort(var a:mang; left,right:longint) ;
var i,j,k,t:longint;
begin
        i:=left;
        j:=right;
        k:=a[(i+j) div 2];
        while (i<j) do
        begin
                while (a[i]<k) do inc(i);
                while a[j]>k do dec(j);
                if (i<=j) then
                begin
                        t:=a[i];
                        a[i]:=a[j];
                        a[j]:=t;
                        inc(i);
                        dec(j);
                end;
        end;
        if (left<j) then sort(a,left,j);
        if (i<right) then  sort(a,i,right);
end;
procedure Enter;
begin
    assign(f1,'t.inp');
    reset(f1);
    readln(f1,n,k);
    for i:=1 to n do
        begin
                read(f1,x);
                cs[i]:=cs[i-1]+x;
                for j:=1 to x do
                begin
                        inc(c);
                        read(f1,a[c]);
                end;
        end;
    close(f1);
end;
procedure Solve;
begin
    check[k]:=true;
    ans:=1;
    kq[1]:=k;
    i:=1;
    while (i<=ans) do
    begin
            for j:=cs[kq[i]-1]+1 to cs[kq[i]] do
            begin
                    if check[a[j]]=false then
                    begin
                            inc(ans);
                            kq[ans]:=a[j];
                            check[a[j]]:=true;
                    end;
            end;
            inc(i);
    end;
end;
procedure Result;
begin
    assign(f2,'t.out');
    rewrite(f2);
    writeln(f2,ans);
    sort(kq,1,ans);
    for i:=1 to ans do write(f2,kq[i],' ');
    close(f2);
end;

begin
        Enter;
        Solve;
        Result;
end.

Editor is loading...