【文章內(nèi)容簡介】
begin new(q)。 q^.ch[0]:=nil。 q^.ch[1]:=nil。 q^.f:=p。 p^.ch[u]:=q。 end。 p:=p^.ch[u]。 end。 exit。 end。 for i:=k to mres+2 do begin d[t]:=i。 build(flag,t+1,i+c[t]+1,resc[t]1)。 end。end。procedure init。var i,j,k,l:longint。begin readln(n,m)。 for i:=1 to m do begin new(a[i])。 a[i]^.ch[0]:=nil。 a[i]^.ch[1]:=nil。 end。 for i:=1 to n do begin read(c[0])。 l:=0。 for j:=1 to c[0] do begin read(c[j])。 inc(l,c[j]+1)。 end。 build(i,1,1,l)。 end。 for i:=1 to m do begin read(t[i,0])。 for j:=1 to t[i,0] do begin read(t[i,j])。 inc(s[i],t[i,j]+1)。 end。 end。end。procedure print。var i,j:longint。begin inc(tt)。 writeln(39。No.39。,tt,39。:39。)。 fillchar(ans,sizeof(ans),0)。 for i:=1 to n do b1[i]:=b[i]。 for i:=m downto 1 do for j:=1 to n do begin ans[j,i]:=b[j]=b[j]^.f^.ch[1]。 b[j]:=b[j]^.f。 end。 for i:=1 to n do begin for j:=1 to m do if ans[i,j] then write(39。39。) else write(39。.39。)。 writeln。 end。 writeln。 for i:=1 to n do b[i]:=b1[i]。end。procedure search(flag,x,k,res:longint)。var i,j:longint。 able:boolean。begin if flag=m+1 then begin print。 exit。// close(input)。 close(output)。// halt。 end。 if x=t[flag,0]+1 then begin fillchar(f,sizeof(f),0)。 for i:=1 to t[flag,0] do for j:=u[flag,i] to u[flag,i]+t[flag,i]1 do f[j]:=true。 able:=true。 for i:=1 to n do begin if b[i]^.ch[ord(f[i])]=nil then begin able:=false。 break。 end。 b[i]:=b[i]^.ch[ord(f[i])]。 end。 if not able then for i:=1 to i1 do b[i]:=b[i]^.f else begin search(flag+1,1,1,s[flag+1])。 for i:=