diff --git a/Graphs/WordLadder-II.cpp b/Graphs/WordLadder-II.cpp new file mode 100644 index 0000000..20e570c --- /dev/null +++ b/Graphs/WordLadder-II.cpp @@ -0,0 +1,55 @@ +//User function Template for C++ + +class Solution { +public: + vector> findSequences(string beginWord, string endWord, vector& wordList) { + // code here + sets(wordList.begin(),wordList.end()); + queue>q; + q.push({beginWord}); + vectorusedOnlevel; + usedOnlevel.push_back(beginWord); + int level=0; + vector>ans; + while(!q.empty()){ + vectorvec=q.front(); + q.pop(); + // erase all words that has been used in the prev level to transform + if(vec.size()>level){ + level++; + for(auto it:usedOnlevel){ + s.erase(it); + } + } + + string word=vec.back(); + if(word==endWord){ + if(ans.size()==0){ + ans.push_back(vec); + } + else if(ans[0].size()==vec.size()){ + ans.push_back(vec); + } + } + for(int i=0;i0){ + vec.push_back(word); + q.push(vec); + // mark as visited on the level + usedOnlevel.push_back(word); + vec.pop_back(); + } + } + word[i]=ch; + + } + + } + return ans; + + + } +};