Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- class Graph {
- vector<vector<int>> g;
- vector<int> color;
- int c;
- bool isValid(int v){
- for (int i = 0; i < g[v].size(); i++){
- if (color[g[v][i]] == color[v])
- return false;
- }
- return true;
- }
- public:
- Graph(int _n, int _c, vector<vector<int>> &_g){
- g = _g;
- color.resize(_n, -1);
- c = _c;
- }
- void Solve(int v = 0){
- if (v == g.size()){
- cout << "YES\n";
- exit(0);
- } else {
- for (int i = 0; i < c; i++){
- color[v] = i;
- if (isValid(v))
- Solve(v + 1);
- color[v] = 0;
- }
- }
- }
- };
- int main() {
- int n, m, c;
- cin >> n >> m >> c;
- vector<vector<int>> g(n);
- for (int i = 0; i < m; i++) {
- int fr, to;
- cin >> fr >> to;
- fr--;
- to--;
- g[fr].emplace_back(to);
- g[to].emplace_back(fr);
- }
- Graph graph(n, c, g);
- g.clear();
- graph.Solve();
- cout << "NO\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment