Exemplo n.º 1
0
 bool dfs(const vector<string> &wordlist, Master &master,
          const Adj &adj, int u, vector<bool> &vis) {
     //printf("in dfs\n");
     vis[u] = true;
     int m = master.guess(wordlist[u]);
     if (m == 6) {
         //printf("found!\n");
         return true;
     }
     for (const auto &p: adj[u]) {
         if (p.first == m) continue;
         for (int v: p.second) vis[v] = true;
     }
     for (int v: adj[u].at(m)) {
         if (!vis[v]) {
             if (dfs(wordlist, master, adj, v, vis)) return true;
         }
     }
     return false;
 }