Files
cpp-flashcards/org/study_deck_02/dsa/graphs/0684-redundant-connection.org
T

65 lines
1.5 KiB
Org Mode
Raw Normal View History

#+PROPERTY: STUDY_DECK_02
* TODO 0684. Redundant Connection :medium:
:PROPERTIES:
:NEETCODE: [[file:../../roadmap.org::*0684. Redundant Connection][0684. Redundant Connection]]
:END:
In this problem, a tree is an *undirected graph* that is connected and has no cycles.
You are given a graph that started as a tree with ~n~ nodes labeled from ~1~ to ~n~, with one additional edge added. The added edge has two *different* vertices chosen from ~1~ to ~n~, and was not an edge that already existed. The graph is represented as an array ~edges~ of length ~n~ where ~edges[i] = [a_{i}, b_{i}]~ indicates that there is an edge between nodes ~a_{i}~ and ~b_{i}~ in the graph.
Return /an edge that can be removed so that the resulting graph is a tree of /~n~/ nodes/. If there are multiple answers, return the answer that occurs last in the input.
*Example 1:*
#+begin_src
Input: edges = [[1,2],[1,3],[2,3]]
Output: [2,3]
#+end_src
*Example 2:*
#+begin_src
Input: edges = [[1,2],[2,3],[3,4],[1,4],[1,5]]
Output: [1,4]
#+end_src
*Constraints:*
- ~n == edges.length~
- ~3 <= n <= 1000~
- ~edges[i].length == 2~
- ~1 <= a_{i} < b_{i} <= edges.length~
- ~a_{i} != b_{i}~
- There are no repeated edges.
- The given graph is connected.
** TODO Approach
Write your approach here.
** TODO Python
#+begin_src python
class Solution:
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
#+end_src
** TODO C++
#+begin_src cpp
class Solution {
public:
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
}
};
#+end_src