fork download
  1. # include<bits/stdc++.h>
  2. //# pragma comment (linker, "/stack: 12345678")
  3. # define IDSZ 310
  4. using namespace std;
  5.  
  6. static int P , maps[1301][1301],GRP[1301][1301];
  7. static int mark[IDSZ];
  8.  
  9. int solve(int ind,int ans,int K,int N,int visited[1301])
  10. {
  11. for (int i=0;i<N;i++)
  12. {
  13. if (GRP[ind][i] >= K && !visited[i])
  14. {
  15. visited[i] = 1;
  16. return solve(i,ans+1,K,N,visited);
  17. }
  18. }
  19. return ans;
  20.  
  21. }
  22. int main(void)
  23. {
  24. int N , K;
  25. memset(mark,0,sizeof(IDSZ));
  26. scanf("%d%d",&N,&K);
  27. for (int i=0;i<N;i++)
  28. {
  29. memset(GRP,0,N+1);
  30. scanf("%d",&P);
  31. maps[i][0] = P;
  32. for (int j=1;j<=P;j++)
  33. scanf("%d",&maps[i][j]);
  34. }
  35. for (int i=0;i<maps[0][0];i++)
  36. mark[maps[0][i]] = 1;
  37. for (int i=0;i<N;i++)
  38. {
  39. for (int j=1;j<=maps[i][0];j++)
  40. mark[maps[i][j]] = 1;
  41. int temp = 0,j;
  42. for (j=i+1;j<N;j++)
  43. {
  44. temp = 0;
  45. for (int k=1;k<=maps[j][0];k++)
  46. if (mark[maps[j][k]])
  47. temp += 1;
  48. GRP[i][j] = temp;
  49. GRP[j][i] = temp;
  50. }
  51. memset(mark,0,sizeof(IDSZ));
  52. for (int i=0;i<maps[0][0];i++)
  53. mark[maps[0][i]] = 1;
  54. }
  55. int ans=1;
  56. for (int i=0;i<N;i++)
  57. {
  58. for (int j=0;j<N;j++)
  59. printf("%d ",GRP[i][j]);
  60. printf("\n");
  61. }
  62. //for (int i=0;i<N;i++)
  63. // {
  64. int visited[1301] = {0};
  65. memset(visited,0,sizeof(visited));
  66. int temp=1;
  67. int k = solve(0,temp,K,N,visited);
  68. if (k > ans)
  69. ans = k;
  70. // }
  71. printf("%d",ans);
  72. return (0);
  73. }
Success #stdin #stdout 0s 15960KB
stdin
4 2
4 4 6 7 8
4 8 3 0 4
2 0 10
6 1 2 3 0 5 8
stdout
0 2 0 1 
2 0 1 3 
0 1 0 3 
1 3 3 0 
3