diff --git a/Day 59/Geek's Village and Wells_GFG/Geek's_Village_and_Wells.cpp b/Day 59/Geek's Village and Wells_GFG/Geek's_Village_and_Wells.cpp new file mode 100644 index 0000000..d291030 --- /dev/null +++ b/Day 59/Geek's Village and Wells_GFG/Geek's_Village_and_Wells.cpp @@ -0,0 +1,46 @@ +class Solution{ +public: + vector> chefAndWells(int n,int m,vector> &c){ + // Code here + vector> vis(n,vector(m,0)); + vector> ans(n,vector(m,-1)); + queue>> q; + for(int i=0;i=0&&newi=0&&newj& A) { + int ans = 0; + vector seen(A.size()); + + for (int i = 0; i < A.size(); ++i) + if (!seen[i]) { + dfs(A, i, seen); + ++ans; + } + + return ans; + } + + private: + // Dfs on string A[i] + void dfs(const vector& A, int i, vector& seen) { + seen[i] = true; + for (int j = 0; j < A.size(); ++j) + if (!seen[j] && isSimilar(A[i], A[j])) + dfs(A, j, seen); + } + + bool isSimilar(const string& X, const string& Y) { + int diff = 0; + for (int i = 0; i < X.length(); ++i) + if (X[i] != Y[i] && ++diff > 2) + return false; + return true; + } +};