fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <cstdio>
  7. #include <cstdlib>
  8. #include <cstring>
  9. #include <iostream>
  10. #include <list>
  11. #include <set>
  12. #include <map>
  13. #include <queue>
  14. #include <stack>
  15. #include <string>
  16. #include <vector>
  17. #include <deque>
  18. #include <ctime>
  19. #include <sstream>
  20. using namespace std;
  21. #define ot(x) cout<<x<<"\n"
  22. #define cen cout<<"\n"
  23. #define EPS 1e-10
  24. #define mp(x,y) make_pair(x,y)
  25. #define pb(x) push_back(x)
  26. #define DFS_GRAY 2
  27. #define DFS_WHITE -1
  28. #define DFS_BLACK 1
  29. #define fi first
  30. #define sc second
  31. typedef long long int ll;
  32. typedef vector<int> vi;
  33. typedef pair<int,int> ii;
  34. typedef vector<ii> vii;
  35. vector<vi> AdjList;
  36. priority_queue< pair<int, ii> > EdgeList;
  37. ll n,t,j,k,i,m,l;
  38. string s[50][50],ss;
  39. vi match, vis;
  40.  
  41. int Aug(int l)
  42. {
  43. if (vis[l]) return 0;
  44. vis[l] = 1;
  45. for (int j = 0; j < (int)AdjList[l].size(); j++)
  46. {
  47. int r = AdjList[l][j];
  48. if (match[r] == -1 || Aug(match[r]))
  49. {
  50. match[r] = l;
  51. return 1;
  52. }
  53. }
  54. return 0;
  55. }
  56.  
  57. int main ()
  58. {
  59. ios_base::sync_with_stdio(0);
  60.  
  61. cin>>n;
  62. for(i=0; i<n; i++)
  63. {
  64. cin>>m; // jumlah soal
  65.  
  66. AdjList.clear();
  67. for(j=0;j<50;j++)for(k=0;k<50;k++)s[j][k]="";
  68.  
  69. AdjList.assign(100,vi()); // 0..25 dilanjutin 50..75
  70.  
  71. for(j=0; j<m; j++)
  72. {
  73. cin>>t; // jumlah alternatif nama
  74. for(k=0; k<t; k++)
  75. {
  76. ss="";
  77. cin>>ss;
  78. ot(ss<<" DEBUG");
  79. if(ss[0]>=97)
  80. ss[0]-=32; // huruf pertama digedein kalau kecil
  81. s[j][ss[0]-65]=ss;
  82. AdjList[j].pb(50+(ss[0]-65));
  83. }
  84. }
  85.  
  86. int MCBM = 0;
  87. match.assign(80, -1);
  88. for (l = 0; l < 31; l++)
  89. {
  90. vis.assign(31, 0);
  91. MCBM += Aug(l);
  92. }
  93.  
  94. cout<<"Case #"<<i+1<<":\n";
  95. for (j=50;j<50+m;j++){
  96.  
  97. ss = s[match[j]][j-50];
  98. for(l=1;l<ss.length();l++)
  99. if(ss[l]<97)ss[l]+=32;
  100.  
  101. ot(ss);
  102. }
  103.  
  104. }
  105. return 0;
  106. }
  107. /*
  108. 1
  109. 3
  110. 2 a o
  111. 2 d c
  112. 1 b
  113. */
  114.  
Success #stdin #stdout 0s 3248KB
stdin
Standard input is empty
stdout
Standard output is empty