diff --git a/Graph_Algorithms/src/Depth_First_Traversal/Graphs.md b/Graph_Algorithms/src/Depth_First_Traversal/Graphs.md
new file mode 100644
index 00000000..8a32bd78
--- /dev/null
+++ b/Graph_Algorithms/src/Depth_First_Traversal/Graphs.md
@@ -0,0 +1,53 @@
+<h1>Graphs</h1>
+
+Q1) Islands
+
+#### An island is a small piece of land surrounded by water . A group of islands is said to be connected if we can reach from any given island to any other island in the same group . Given N islands (numbered from 1 to N) and two lists of size M (u and v) denoting island u[i] is connected to island v[i] and vice versa . Can you count the number of connected groups of islands.
+
+```c++
+
+void dfs(int curr, int* visited, int** adj_matrix, int n){
+    visited[curr] = 1;
+    for(int i = 0; i<n ; i++){
+        if(adj_matrix[curr][i]==1 && visited[i] == 0 && curr!= i){
+            dfs(i, visited, adj_matrix, n);
+        }
+    }
+}
+
+int solve(int n,int m,vector<int>u,vector<int>v)
+{
+	int** adj_matrix = new int*[n];
+    for(int i = 0; i<n; i++){
+        adj_matrix[i] = new int[n];
+        for(int j = 0; j<n; j++){
+            adj_matrix[i][j] = 0;
+        }
+    }
+    
+    for(int i = 0; i<m; i++){
+        adj_matrix[u[i]-1][v[i]-1] = 1;
+        adj_matrix[v[i]-1][u[i]-1] = 1;
+    }
+   
+
+    int* visited = new int[n];
+    for(int i = 0 ; i<n; i++){
+        visited[i] = 0;
+    }
+    int count = 0;
+    for(int i = 0; i<n; i++){
+        if(visited[i] == 0){
+            count++;
+            dfs(i, visited, adj_matrix, n);
+        }
+    }
+    return count;
+    
+    
+}
+
+```
+
+Q2) 
+