func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Node {     Node() : vis(0), comp(-1) {}     int vis;     int comp;     vector<int> adj;   };   vector<int> vis;   bool dfs(vector<vector<int> >& a, int u, string& res) {     vis[u] = true;     for (int i = 0; i < a.size(); i++) {       if (i == u) continue;       if (vis[i] == false) {         if (a[u][i] == 0) {           if (res[u] ==  b ) res[u] =  a ;           res[i] = (res[u] ==  a ) ?  c  :  a ;           if (!dfs(a, i, res)) return false;         }       } else {         if (a[u][i] == 0) {           if (res[u] == res[i]) return false;         }       }     }     return true;   }   int main() {     std::ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int n, m;     cin >> n >> m;     vector<vector<int> > a(n, vector<int>(n));     for (int i = 0; i < m; i++) {       int u, v;       cin >> u >> v;       u--;       v--;       a[u][v] = 1;       a[v][u] = 1;     }     string res(n,  b );     vis.assign(n, false);     for (int i = 0; i < n; i++) {       if (vis[i] == false) {         if (!dfs(a, i, res)) {           cout <<  No  << endl;           return 0;         }       }     }     for (int i = 0; i < n; i++) {       for (int j = i + 1; j < n; j++) {         if (abs(res[i] - res[j]) == 2 && a[i][j] == 1) {           cout <<  No  << endl;           return 0;         }         if (abs(res[i] - res[j]) <= 1 && a[i][j] == 0) {           cout <<  No  << endl;           return 0;         }       }     }     cout <<  Yes  << endl;     cout << res << endl;     return 0;   }   