Skip to content

Commit

Permalink
day 14
Browse files Browse the repository at this point in the history
  • Loading branch information
sachuverma committed Feb 14, 2021
1 parent 1ef03d5 commit f70937c
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"files.associations": {
"array": "cpp",
"bitset": "cpp",
"string_view": "cpp",
"initializer_list": "cpp",
"regex": "cpp",
"utility": "cpp",
"valarray": "cpp"
}
}
73 changes: 73 additions & 0 deletions Leetcode Daily Challenge/February-2021/14. Is Graph Bipartite.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
Is Graph Bipartite?
===================
Given an undirected graph, return true if and only if it is bipartite.
Recall that a graph is bipartite if we can split its set of nodes into two independent subsets A and B, such that every edge in the graph has one node in A and another node in B.
The graph is given in the following form: graph[i] is a list of indexes j for which the edge between nodes i and j exists. Each node is an integer between 0 and graph.length - 1. There are no self edges or parallel edges: graph[i] does not contain i, and it doesn't contain any element twice.
Example 1:
Input: graph = [[1,3],[0,2],[1,3],[0,2]]
Output: true
Explanation: We can divide the vertices into two groups: {0, 2} and {1, 3}.
Example 2:
Input: graph = [[1,2,3],[0,2],[0,1,3],[0,2]]
Output: false
Explanation: We cannot find a way to divide the set of nodes into two independent subsets.
Constraints:
1 <= graph.length <= 100
0 <= graph[i].length < 100
0 <= graph[i][j] <= graph.length - 1
graph[i][j] != i
All the values of graph[i] are unique.
The graph is guaranteed to be undirected.
*/

class Solution
{
public:
bool bfs(int curr, vector<vector<int>> &graph, vector<int> &color)
{
queue<int> pending;
pending.push(curr);
color[curr] = 1;

while (pending.size())
{
auto curr = pending.front();
pending.pop();
for (auto &i : graph[curr])
{
if (color[i] != -1 && color[i] != 1 - color[curr])
return false;
else if (color[i] == -1)
{
color[i] = 1 - color[curr];
pending.push(i);
}
}
}
return true;
}

bool isBipartite(vector<vector<int>> &graph)
{
int n = graph.size();
vector<int> color(n, -1);

for (int i = 0; i < n; ++i)
{
if (color[i] == -1)
{
if (!bfs(i, graph, color))
return false;
};
}

return true;
}
};
1 change: 1 addition & 0 deletions Leetcode Daily Challenge/February-2021/README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@
| 11. | [Valid Anagram](https://leetcode.com/explore/challenge/card/february-leetcoding-challenge-2021/585/week-2-february-8th-february-14th/3636/) | [cpp](./11.%20Valid%20Anagram.cpp) |
| 12. | [Number of Steps to Reduce a Number to Zero](https://leetcode.com/explore/challenge/card/february-leetcoding-challenge-2021/585/week-2-february-8th-february-14th/3637/) | [cpp](./12.%20Number%20of%20Steps%20to%20Reduce%20a%20Number%20to%20Zero.cpp) |
| 13. | [Shortest Path in Binary Matrix](https://leetcode.com/explore/challenge/card/february-leetcoding-challenge-2021/585/week-2-february-8th-february-14th/3638/) | [cpp](./13.%20Shortest%20Path%20in%20Binary%20Matrix.cpp) |
| 14. | [Is Graph Bipartite?](https://leetcode.com/explore/featured/card/february-leetcoding-challenge-2021/585/week-2-february-8th-february-14th/3639/) | [cpp](./14.%20Is%20Graph%20Bipartite.cpp) |


0 comments on commit f70937c

Please sign in to comment.