1. class Solution {
    2. private:
    3. bool x_is_unhappy_for_u(int x, int y, int u, int v, vector<vector<int> > &love_score) {
    4. if (love_score[x][u] > love_score[x][y] && love_score[u][x] > love_score[u][v])
    5. return true;
    6. return false;
    7. }
    8. public:
    9. int unhappyFriends(int n, vector<vector<int>> &preferences, vector<vector<int>> &pairs) {
    10. vector<vector<int> > love_score(n, vector<int>(n));
    11. for (int i = 0; i < n; ++i) {
    12. for (int j = 0; j < n - 1; ++j) {
    13. love_score[i][preferences[i][j]] = n - j;
    14. }
    15. }
    16. int count = 0;
    17. vector<bool> un_happy(n, false);
    18. for (int i = 0; i < n / 2; ++i) {
    19. for (int j = i + 1; j < n / 2; ++j) {
    20. int x = pairs[i][0];
    21. int y = pairs[i][1];
    22. int u = pairs[j][0];
    23. int v = pairs[j][1];
    24. if (x_is_unhappy_for_u(x, y, u, v, love_score) ||
    25. x_is_unhappy_for_u(x, y, v, u, love_score))
    26. un_happy[x] = true;
    27. if (x_is_unhappy_for_u(y, x, u, v, love_score) ||
    28. x_is_unhappy_for_u(y, x, v, u, love_score))
    29. un_happy[y] = true;
    30. if (x_is_unhappy_for_u(u, v, x, y, love_score) ||
    31. x_is_unhappy_for_u(u, v, y, x, love_score))
    32. un_happy[u] = true;
    33. if (x_is_unhappy_for_u(v, u, x, y, love_score) ||
    34. x_is_unhappy_for_u(v, u, y, x, love_score))
    35. un_happy[v] = true;
    36. }
    37. }
    38. for (bool i : un_happy)
    39. if (i) ++count;
    40. return count;
    41. }
    42. };

    时间复杂度 1583. 统计不开心的朋友 2021-08-14 - 图1
    空间复杂度 1583. 统计不开心的朋友 2021-08-14 - 图2