Advertisement
TwITe

Untitled

Dec 2nd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int MAXN = 4e5 + 10;
  5.  
  6. long long gcd(long long a, long long b) {
  7.     if (b == 0) {
  8.         return a;
  9.     }
  10.     return gcd(b, a % b);
  11. }
  12.  
  13. long long lcm(long long a, long long b) {
  14.     return a * b / gcd(a, b);
  15. }
  16.  
  17. bool used[MAXN] {false};
  18. int color[MAXN];
  19. vector <vector <int>> v;
  20.  
  21. bool isSafe(int node, int c) {
  22.     for (int i : v[node])
  23.         if (c == color[i]) {
  24.             return false;
  25.         }
  26.     return true;
  27. }
  28.  
  29. bool graph_coloring(int n, int m, int node) {
  30.     if (node == n) {
  31.         return true;
  32.     }
  33.     for (int c = 1; c <= m; c++) {
  34.         if (isSafe(node, c)) {
  35.             color[node] = c;
  36.             if (graph_coloring(n, m, node + 1)) {
  37.                 return true;
  38.             }
  39.             color[node] = 0;
  40.         }
  41.     }
  42.     return false;
  43. }
  44.  
  45. void task3() {
  46.     int n, m, k;
  47.     cin >> n >> m >> k;
  48.     for (int i = 0; i < n; i++) {
  49.         cin >> color[i];
  50.     }
  51.     bool flag;
  52.     v.resize(n);
  53.     for (int i = 0; i < m; i++) {
  54.         int a, b;
  55.         cin >> a >> b;
  56.         a--, b--;
  57.         v[a].push_back(b);
  58.         v[b].push_back(a);
  59.     }
  60.     flag = graph_coloring(n, k, 0);
  61.     if (flag) {
  62.         cout << "Yes" << endl;
  63.         for (int i = 0; i < n; i++) {
  64.             cout << color[i] << " ";
  65.         }
  66.     }
  67.     else {
  68.         cout << "No";
  69.     }
  70. }
  71.  
  72. int main() {
  73.     task3();
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement