Leetcode 1761. Minimum Degree of a Connected Trio in a Graph (图好题)

  1. Minimum Degree of a Connected Trio in a Graph
    Hard

You are given an undirected graph. You are given an integer n which is the number of nodes in the graph and an array edges, where each edges[i] = [ui, vi] indicates that there is an undirected edge between ui and vi.

A connected trio is a set of three nodes where there is an edge between every pair of them.

The degree of a connected trio is the number of edges where one endpoint is in the trio, and the other is not.

Return the minimum degree of a connected trio in the graph, or -1 if the graph has no connected trios.

Example 1:

Input: n = 6, edges = [[1,2],[1,3],[3,2],[4,1],[5,2],[3,6]]

Output: 3

Explanation: There is exactly one trio, which is [1,2,3]. The edges that form its degree are bolded in the figure above.

Example 2:

Input: n = 7, edges = [[1,3],[4,1],[4,3],[2,5],[5,6],[6,7],[7,5],[2,6]]

Output: 0

Explanation: There are exactly three trios:

  1. 1,4,3\] with degree 0.

  2. 5,6,7\] with degree 2.

2 <= n <= 400

edges[i].length == 2

1 <= edges.length <= n * (n-1) / 2

1 <= ui, vi <= n

ui != vi

There are no repeated edges.

解法1:临接矩阵

cpp 复制代码
class Solution {
public:
    int minTrioDegree(int n, vector<vector<int>>& edges) {
        vector<vector<int>> matrix(n + 1, vector<int>(n + 1));
        vector<int> counter(n + 1);
        int res = INT_MAX;
        for (auto &edge : edges) {
            matrix[min(edge[0], edge[1])][max(edge[0], edge[1])] = 1;
            ++counter[edge[0]];
            ++counter[edge[1]];
        }
        for (auto i = 1; i <= n; i++) {
            for (auto j = i + 1; j <= n; j++) {
                if (matrix[i][j]) {
                    for (auto k = j + 1; k <= n; k++) {
                        if (matrix[i][k] && matrix[j][k]) {
                            res = min(res, counter[i] + counter[j] + counter[k] - 6);
                        }
                    }
                }
            }
        }
        return res == INT_MAX ? -1 : res;
    }
};
相关推荐
workflower2 小时前
单元测试-例子
java·开发语言·算法·django·个人开发·结对编程
MicroTech20254 小时前
微算法科技(MLGO)研发突破性低复杂度CFG算法,成功缓解边缘分裂学习中的掉队者问题
科技·学习·算法
墨染点香5 小时前
LeetCode 刷题【126. 单词接龙 II】
算法·leetcode·职场和发展
aloha_7895 小时前
力扣hot100做题整理91-100
数据结构·算法·leetcode
Tiny番茄5 小时前
31.下一个排列
数据结构·python·算法·leetcode
挂科是不可能出现的5 小时前
最长连续序列
数据结构·c++·算法
前端小L6 小时前
动态规划的“数学之魂”:从DP推演到质因数分解——巧解「只有两个键的键盘」
算法·动态规划
RTC老炮6 小时前
webrtc弱网-ReceiveSideCongestionController类源码分析及算法原理
网络·算法·webrtc
21号 16 小时前
9.Redis 集群(重在理解)
数据库·redis·算法
码农多耕地呗7 小时前
力扣146.LRU缓存(哈希表缓存.映射+双向链表数据结构手搓.维护使用状况顺序)(java)
数据结构·leetcode·缓存