fork download
  1.  
  2. #include <bits/stdc++.h>
  3.  
  4. #define ll long long
  5. #define dbl double
  6.  
  7. using namespace std;
  8.  
  9. const int N = 111;
  10. const int INF = 1000 * 1000 * 1000;
  11.  
  12. vector<pair<int,int>> g[N];
  13.  
  14. int memo[N][N][50];
  15.  
  16. int first_wins(int a, int b, int prev){
  17. if(memo[a][b][prev] != -1) return memo[a][b][prev];
  18.  
  19. // if can do smth such that second loses then true
  20. int res = 0;
  21. for(auto p : g[a]){
  22. int to = p.first;
  23. int letter = p.second;
  24. if(letter >= prev){
  25. if(!first_wins(b,to,letter)){
  26. res = 1;
  27. }
  28. }
  29. }
  30. return memo[a][b][prev] = res;
  31. }
  32.  
  33. int main() {
  34. for(int i = 0; i < N; i++){
  35. for(int j = 0; j < N; j++){
  36. for(int k= 0 ; k < 50; k++){
  37. memo[i][j][k]= -1;
  38. }
  39. }
  40. }
  41.  
  42. int n,m;
  43. cin >> n >> m;
  44. for(int i = 0; i < m; i++){
  45. int u,v;
  46. string s;
  47. cin >> u >> v >> s;
  48. u--,v--;
  49. g[u].push_back({v,s[0]-'a'+1});
  50. }
  51.  
  52.  
  53. for(int av = 0; av < n; av++){
  54. for(int bv = 0; bv < n; bv++){
  55. int a_wins = first_wins(av,bv,0);
  56. if(a_wins){
  57. cout << 'A';
  58. }
  59. else{
  60. cout << 'B';
  61. }
  62. }
  63. cout << endl;
  64. }
  65. return 0;
  66. }
Runtime error #stdin #stdout 0s 5216KB
stdin
Standard input is empty
stdout
Standard output is empty