fork download
  1. program subjects;
  2.  
  3. const
  4. MAXN = 100000;
  5. MAXM = 1000;
  6.  
  7. var
  8. M, N, P, i, j, h: LongInt;
  9. K : Array[0..MAXN-1] of LongInt;
  10. S : Array[0..MAXN-1] of Array[0..5] of LongInt;
  11. ans : Array[1..MAXM] of Array[1..2] of LongInt;
  12. coppie : Array[1..MAXM,1..MAXM] of LongInt;
  13. materia : Array[1..MAXM] of boolean;
  14.  
  15. begin
  16. (*assign(input, 'input.txt'); reset(input);
  17.   assign(output, 'output.txt'); rewrite(output);*)
  18.  
  19. ReadLn(N, M);
  20.  
  21. for i:=1 to M do materia[i]:=false;
  22.  
  23. for i := 0 to N - 1 do
  24. begin
  25. Read(K[i]);
  26. for j := 0 to K[i]-1 do
  27. begin
  28. Read(S[i][j]);
  29. materia[S[i][j]]:=true;
  30. end;
  31.  
  32. end;
  33.  
  34. for i:=1 to M do
  35. for j:=1 to M do coppie[i,j]:=0;
  36. P:=0;
  37. for i:=0 to N-1 do
  38. begin
  39. for j:=0 to K[i]-1 do
  40. for h:= j+1 to K[i]-1 do
  41. begin
  42. coppie[S[i][j],S[i][h]]:=coppie[S[i][j],S[i][h]]+1;
  43. coppie[S[i][h],S[i][j]]:=coppie[S[i][h],S[i][j]]+1;
  44. end;
  45. end;
  46.  
  47. for i:=1 to M do
  48. begin
  49. for j:=1 to M do write (coppie[i][j],' ');
  50. writeln;
  51. end;
  52. for i:=1 to M do
  53. for j:= 1 to M do
  54. if (coppie[i,j]=0) and (i<j) then
  55. begin
  56. P:=P+1;
  57. ans[P][1]:=i; ans[P][2]:=j;
  58. end;
  59.  
  60. WriteLn(P);
  61. for i := 1 to P do
  62. begin
  63. for j := 1 to 2 do
  64. Write(ans[i][j], ' ');
  65. WriteLn();
  66. end;
  67.  
  68. end.
Success #stdin #stdout 0.01s 5284KB
stdin
2 10
5 2 3 4 5 6  
5 1 7 8 9 10
stdout
0 0 0 0 0 0 1 1 1 1 
0 0 1 1 1 1 0 0 0 0 
0 1 0 1 1 1 0 0 0 0 
0 1 1 0 1 1 0 0 0 0 
0 1 1 1 0 1 0 0 0 0 
0 1 1 1 1 0 0 0 0 0 
1 0 0 0 0 0 0 1 1 1 
1 0 0 0 0 0 1 0 1 1 
1 0 0 0 0 0 1 1 0 1 
1 0 0 0 0 0 1 1 1 0 
25
1 2 
1 3 
1 4 
1 5 
1 6 
2 7 
2 8 
2 9 
2 10 
3 7 
3 8 
3 9 
3 10 
4 7 
4 8 
4 9 
4 10 
5 7 
5 8 
5 9 
5 10 
6 7 
6 8 
6 9 
6 10