Skip to content

Commit

Permalink
Create possible-bipartition.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
kamyu104 authored Aug 12, 2018
1 parent b2a38d5 commit 5568f94
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions C++/possible-bipartition.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Time: O(|V| + |E|)
// Space: O(|V| + |E|)

class Solution {
public:
bool possibleBipartition(int N, vector<vector<int>>& dislikes) {
vector<vector<int>> adj(N);
for (const auto& dislike : dislikes) {
int u = dislike[0] - 1, v = dislike[1] - 1;
adj[u].emplace_back(v);
adj[v].emplace_back(u);
}

vector<int> color(N);
color[0] = 1;
queue<int> q({0});
while (!q.empty()) {
const auto cur = q.front(); q.pop();
for (const auto& nei : adj[cur]) {
if (color[nei] == color[cur]) {
return false;
} else if (color[nei] == -color[cur]) {
continue;
}
color[nei] = -color[cur];
q.emplace(nei);
}
}
return true;
}
};

0 comments on commit 5568f94

Please sign in to comment.