{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Lecture 11 - Depth First Search (undirected graphs)\n",
        "\n",
        "In this lecture, we will discuss :\n",
        "\n",
        "*   The s-t Connectivity problem\n",
        "*   Paths in graphs\n",
        "*   Depth First Search - idea\n",
        "*   DFS - implementation\n",
        "*   DFS - applications\n",
        "*   Data Structure - Stacks (if time permits)\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "\n",
        "\n",
        "Announcements -\n",
        "*  Exam 1 : Feb 26 - Mar 1\n",
        "* Homework 3 out on PL"
      ],
      "metadata": {
        "id": "QCyKTZos-n2O"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# s-t connectivity problem\n",
        "\n",
        "Typically, $s$ is the source vertex and $t$ is the target vertex. The $s-t$ connectivity problem asks whether $s$ is connected to $t$?\n",
        "\n",
        "![Screenshot 2026-02-25 at 12.36.31 PM.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqwAAAFeCAYAAABAcE2/AAAMS2lDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSIQQIhCIl9CaISAkgJYQWQHoRRCUkAUKJMSGo2NFlV3DtIoIVXQVRdHUFRGzYlUWx98WCirIuFuzKmxBAl33le+f75t7//nPmn3POnVsGAHoHXyrNRTUByJPky2JDAljjk1NYpGcAAXqADgyAA18gl3KioyMAtMHz3+3tNegN7bKjUuuf/f/VtIQiuQAAJBridKFckAfxbwDgzQKpLB8AohTyFtPypUq8CmIdGQwQ4molzlThZiVOV+GL/T7xsVyIHwFAVufzZZkAaPRAnlUgyIQ6dJgtcJYIxRKI/SH2zcubIoR4HsS20AfOSVfqs9O/08n8m2b6kCafnzmEVbn0GzlQLJfm8mf8n+X435aXqxicwwY29SxZaKwyZ1i3RzlTwpVYHeL3kvTIKIi1AUBxsbDfX4mZWYrQBJU/aiuQc2HNABPisfLcON4AHyvkB4ZDbARxhiQ3MmLApyhDHKz0gfVDy8X5vHiI9SGuFsmD4gZ8jsqmxA7Oey1DxuUM8E/5sv4YlPpfFTkJHJU+pp0l4g3oY06FWfFJEFMhDiwQJ0ZCrAFxpDwnLnzAJ7Uwixs56CNTxCpzsYRYJpKEBKj0sbIMWXDsgP+OPPlg7tjRLDEvcgBfys+KD1XVCnsk4PfHD3PBekQSTsKgjkg+PmIwF6EoMEiVO04WSRLiVDyuL80PiFWNxe2ludED/niAKDdEyZtDHC8viBscW5APF6dKHy+W5kfHq+LEK7L5YdGqePA9IAJwQSBgAQVs6WAKyAbitu6Gbnil6gkGfCADmUAEHAeYwRFJ/T0SeIwDheBPiERAPjQuoL9XBAog/2UYq+TEQ5zq6AgyBvqUKjngMcR5IBzkwmtFv5JkKIJE8Agy4n9ExIdNAHPIhU3Z/+/5QfYbw4FMxACjGJyRRR/0JAYRA4mhxGCiHW6I++LeeAQ8+sPmgrNxz8E8vvkTHhPaCQ8IVwkdhJuTxUWyYVGOAx1QP3igPunf1we3hppueADuA9WhMs7EDYEj7grn4eB+cGY3yHIH4lZWhTVM+28ZfHeHBvwozhSUokfxp9gOH6lhr+E2pKKs9ff1UcWaPlRv7lDP8Pm531VfCM/hwz2xn7B92GnsGHYWa8YaAAs7gjVirdghJR5acY/6V9zgbLH98eRAneFr5tudVVZS7lzr3OX8WdWXL5qer3wYuVOkM2TizKx8Fgd+MUQsnkTgNJLl4uziDoDy+6N6vb2O6f+uIMzWb9yCPwDwOdLX13fwGxd2BIBfPeAr4cA3zpYNPy1qAJw5IFDIClQcrjwQ4JuDDp8+A2ACLIAtzMcFuANv4A+CQBiIAvEgGUyC0WfBdS4D08AsMB8Ug1KwDKwGFWAj2AKqwS6wFzSAZnAMnALnwUVwFdyGq6cTPAc94C34hCAICaEhDMQAMUWsEAfEBWEjvkgQEoHEIslIGpKJSBAFMgtZgJQiK5AKZDNSg/yKHECOIWeRduQmch/pQl4hH1EMVUd1UGPUGh2FslEOGo7GoxPRTHQqWoguRJeg5WgVuhOtR4+h59GraAf6HO3FAKaGMTEzzBFjY1wsCkvBMjAZNgcrwcqwKqwOa4L3+TLWgXVjH3AizsBZuCNcwaF4Ai7Ap+Jz8MV4BV6N1+Mn8Mv4fbwH/0qgEYwIDgQvAo8wnpBJmEYoJpQRthH2E07CZ6mT8JZIJDKJNkQP+CwmE7OJM4mLieuJu4lHie3Eh8ReEolkQHIg+ZCiSHxSPqmYtJa0k3SEdInUSXpPViObkl3IweQUsoRcRC4j7yAfJl8iPyF/omhSrChelCiKkDKDspSyldJEuUDppHyialFtqD7UeGo2dT61nFpHPUm9Q32tpqZmruapFqMmVpunVq62R+2M2n21D+ra6vbqXPVUdYX6EvXt6kfVb6q/ptFo1jR/Wgotn7aEVkM7TrtHe6/B0HDS4GkINeZqVGrUa1zSeEGn0K3oHPokeiG9jL6PfoHerUnRtNbkavI152hWah7QvK7Zq8XQGq0VpZWntVhrh9ZZrafaJG1r7SBtofZC7S3ax7UfMjCGBYPLEDAWMLYyTjI6dYg6Njo8nWydUp1dOm06Pbrauq66ibrTdSt1D+l2MDGmNZPHzGUuZe5lXmN+1DPW4+iJ9Bbp1eld0nunP0LfX1+kX6K/W/+q/kcDlkGQQY7BcoMGg7uGuKG9YYzhNMMNhicNu0fojPAeIRhRMmLviFtGqJG9UazRTKMtRq1GvcYmxiHGUuO1xseNu02YJv4m2SarTA6bdJkyTH1NxaarTI+YPmPpsjisXFY56wSrx8zILNRMYbbZrM3sk7mNeYJ5kflu87sWVAu2RYbFKosWix5LU8txlrMsay1vWVGs2FZZVmusTlu9s7axTrL+0brB+qmNvg3PptCm1uaOLc3Wz3aqbZXtFTuiHdsux2693UV71N7NPsu+0v6CA+rg7iB2WO/QPpIw0nOkZGTVyOuO6o4cxwLHWsf7TkynCKcipwanF6MsR6WMWj7q9Kivzm7Ouc5bnW+P1h4dNrpodNPoVy72LgKXSpcrY2hjgsfMHdM45qWrg6vIdYPrDTeG2zi3H91a3L64e7jL3OvcuzwsPdI81nlcZ+uwo9mL2Wc8CZ4BnnM9mz0/eLl75Xvt9frL29E7x3uH99OxNmNFY7eOfehj7sP32ezT4cvyTfPd5NvhZ+bH96vye+Bv4S/03+b/hGPHyebs5LwIcA6QBewPeMf14s7mHg3EAkMCSwLbgrSDEoIqgu4FmwdnBtcG94S4hcwMORpKCA0PXR56nWfME/BqeD1hHmGzw06Eq4fHhVeEP4iwj5BFNI1Dx4WNWznuTqRVpCSyIQpE8aJWRt2NtomeGn0whhgTHVMZ8zh2dOys2NNxjLjJcTvi3sYHxC+Nv51gm6BIaEmkJ6Ym1iS+SwpMWpHUMX7U+NnjzycbJouTG1NIKYkp21J6JwRNWD2hM9UttTj12kSbidMnnp1kOCl30qHJ9Mn8yfvSCGlJaTvSPvOj+FX83nRe+rr0HgFXsEbwXOgvXCXsEvmIVoieZPhkrMh4mumTuTKzK8svqyyrW8wVV4hfZodmb8x+lxOVsz2nLzcpd3ceOS8t74BEW5IjOTHFZMr0Ke1SB2mxtGOq19TVU3tk4bJtckQ+Ud6YrwN/9FsVtoofFPcLfAsqC95PS5y2b7rWdMn01hn2MxbNeFIYXPjLTHymYGbLLLNZ82fdn82ZvXkOMid9Tstci7kL53bOC5lXPZ86P2f+70XORSuK3ixIWtC00HjhvIUPfwj5obZYo1hWfP1H7x83/oT/JP6pbdGYRWsXfS0RlpwrdS4tK/28WLD43M+jfy7/uW9JxpK2pe5LNywjLpMsu7bcb3n1Cq0VhSserhy3sn4Va1XJqjerJ68+W+ZatnENdY1iTUd5RHnjWsu1y9Z+rsiquFoZULl7ndG6ReverReuv7TBf0PdRuONpRs/bhJvurE5ZHN9lXVV2RbiloItj7cmbj39C/uXmm2G20q3fdku2d5RHVt9osajpmaH0Y6ltWitorZrZ+rOi7sCdzXWOdZt3s3cXboH7FHsefZr2q/X9obvbdnH3lf3m9Vv6/Yz9pfUI/Uz6nsasho6GpMb2w+EHWhp8m7af9Dp4PZms+bKQ7qHlh6mHl54uO9I4ZHeo9Kj3ccyjz1smdxy+/j441dOxJxoOxl+8syp4FPHT3NOHznjc6b5rNfZA+fY5xrOu5+vb3Vr3f+72+/729zb6i94XGi86HmxqX1s++FLfpeOXQ68fOoK78r5q5FX268lXLtxPfV6xw3hjac3c2++vFVw69PteXcId0ruat4tu2d0r+oPuz92d7h3HLofeL/1QdyD2w8FD58/kj/63LnwMe1x2RPTJzVPXZ42dwV3XXw24Vnnc+nzT93Ff2r9ue6F7Yvf/vL/q7VnfE/nS9nLvleLXxu83v7G9U1Lb3Tvvbd5bz+9K3lv8L76A/vD6Y9JH598mvaZ9Ln8i92Xpq/hX+/05fX1Sfkyfv+vAAaUW5sMAF5tB4CWDAAD7hupE1T7w35DVHvafgT+E1btIfsN/rnUwX/6mG74d3MdgD1bAbCG+vRUAKJpAMR7AnTMmKE2uJfr33cqjQj3BpvivqTnpYN/Y6o96XdxDz8DpaorGH7+F1pqgySvLNmnAAAABGNJQ1AMDQABbgPj7wAAAIplWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAACQAAAAAQAAAJAAAAABAAOShgAHAAAAEgAAAHigAgAEAAAAAQAAAqygAwAEAAAAAQAAAV4AAAAAQVNDSUkAAABTY3JlZW5zaG90i3rudAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAdZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzUwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY4NDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo6BSkeAAAAHGlET1QAAAACAAAAAAAAAK8AAAAoAAAArwAAAK8AABfq5Za3WAAAF7ZJREFUeAHs3XmsHWX5B/CnslQoWGSJBBREkaUoYgAVDBIXAghKXVmC1BjFKNS0qAiicQExAkJYNG6AGJOiYkwFARMgBGWvBLAoIgZZtBFRCg2iiOXnO/ldcjvc3nvWOe+Z93OSpnfOmXnnfT/P/PHNvc+ZmfXM/17hRYAAAQIECBAgQCBTgVkCa6aVMS0CBAgQIECAAIFKQGB1IRAgQIAAAQIECGQtILBmXR6TI0CAAAECBAgQEFhdAwQIECBAgAABAlkLCKxZl8fkCBAgQIAAAQIEBFbXAAECBAgQIECAQNYCAmvW5TE5AgQIECBAgAABgdU1QIAAAQIECBAgkLWAwJp1eUyOAAECBAgQIEBAYHUNECBAgAABAgQIZC0gsGZdHpMjQIAAAQIECBAQWF0DBAgQIECAAAECWQsIrFmXx+QIECBAgAABAgQEVtcAAQIECBAgQIBA1gICa9blMTkCBAgQIECAAAGB1TVAgAABAgQIECCQtYDAmnV5TI4AAQIECBAgQEBgdQ0QIECAAAECBAhkLSCwZl0ekyNAgAABAgQIEBBYXQMECBAgQIAAAQJZCwisWZfH5AgQIECAAAECBARW1wABAgQIECBAgEDWAgJr1uUxOQIECBAgQIAAAYHVNUCAAAECBAgQIJC1gMCadXlMjgABAgQIECBAQGB1DRAgQIAAAQIECGQtILBmXR6TI0CAAAECBAgQEFhdAwQIECBAgAABAlkLCKxZl8fkCBAgQIAAAQIEBFbXAAECBAgQIECAQNYCAmvW5TE5AgQIECBAgAABgdU1QIAAAQIECBAgkLWAwJp1eUyOAAECBAgQIEBAYHUNECBAgAABAgQIZC0gsGZdHpMjQIAAAQIECBAQWF0DBAgQIECAAAECWQsIrFmXx+QIECBAgAABAgQEVtcAAQIECBAgQIBA1gICa9blMTkCBAgQIECAAAGB1TVAgAABAgQIECCQtYDAmnV5TI4AAQIECBAgQEBgdQ0QIECAAAECBAhkLSCwZl0ekyNAgAABAgQIEBBYXQMECBAgQIAAAQJZCwisWZfH5AgQIECAAAECBARW1wABAgQIECBAgEDWAgJr1uUxOQJ5CaxcuTKWLVtW/bv33nvjySefjP/85z8xe/bsmDNnTsybNy/22GOPeM1rXhMbbLBBXpM3GwIECBAYWwGBdWxLZ+IEmhG4++674xvf+EZcccUV8ac//enZULrTTjtVIXW99daLf//737Fq1aq48847qzB7//33V/u9853vjI985COx5ZZbNjNZZyFAgACBVgoIrK0sq0UR6E9g9erVcemll8Z5550Xt9xySxx11FFx2GGHVb853XDDDWcc/NFHH62Ou/DCC6tx3vGOd8TChQtj7733nvFYOxAgQIAAgbqAwFoXsU2gcIF77rknFixYECl0HnvssdXPG2+8cc8qK1asiG9961vxzW9+M/bdd9/qt7WbbbZZz+M5kAABAgTKExBYy6u5FROYUuCZZ56Js88+Oz7/+c/HJz/5yTjxxBNj3XXXnXLfXt587LHHYvHixXH55ZdXAfaQQw7pZRjHECBAgECBAgJrgUW3ZAJ1gSeeeCLmz58fDz/8cFx00UWx22671XcZ2PZll10WRx99dKT+1tRyMGvWrIGNbSACBAgQaKeAwNrOuloVgY4FUlg98MADY4sttoglS5bE+uuv3/Gxve74yCOPxH777Re77757fOc73xFae4V0HAECBAoREFgLKbRlEphKYHJYvfjiiyN947+p19///vd461vfKrQ2Be48BAgQGGMBgXWMi2fqBPoRSD2rBxxwQGy00UbRdFidmPdEaE2/bT3ttNMm3vY/AQIECBBYQ0BgXYPDBoFyBFL/aPrm/q9//evqxv+jWvlDDz0Uu+66ayxdujT22WefUU3DeQkQIEAgYwGBNePimBqBYQmkp1SlJ1JdffXV1Z/kh3WeTsf93ve+FyeffHL14IH0xCwvAgQIECAwWUBgnazhZwIFCKRWgDe+8Y3xpje9Kb70pS9ls+L0cIFtttmmunNANpMyEQIECBDIQkBgzaIMJkGgOYErr7wyjjnmmEiPXG3yS1YzrfAvf/lL7LDDDvH73/8+tt5665l29zkBAgQIFCQgsBZUbEslkAQOPvjg6rern/jEJ7IDOfLII2O77bar2gOym5wJESBAgMDIBATWkdE7MYHmBf74xz9WDwV44IEH4oUvfGHzE5jhjDfddFOkJ2A9+OCDjdwPdobp+JgAAQIEMhEQWDMphGkQaELgU5/6VKRHpH77299u4nQ9nWPPPfesHuF6xBFH9HS8gwgQIECgfQICa/tqakUE1irw6le/Or72ta9VN+xf605dfvDUU08N9Lehp59+etx1112R7hzgRYAAAQIEkoDA6jogUIjAk08+GS94wQvib3/7W2yyySZ9rTqNcdZZZ8Xll19efXkr3SLr3HPPjdRykO5C8N73vrfn8a+99trqS2EptHoRIECAAIEkILC6DggUInDDDTfEggUL4g9/+ENfK053FzjooIPi8ccfrx48kG5H9YMf/KAKmSkUb7755lUo7vUkq1atik033TQeffTR6ilcvY7jOAIECBBoj4DA2p5aWgmBaQXOPvvsSF9qWrJkybT7TfdhCruve93rqj7YdHus9EjVide+++4b1113Xbz5zW+uHkgw8X4v/++0005Vn226X6wXAQIECBAQWF0DBAoRWLRoUdUK8IUvfKHnFb/tbW+LK664Io477riqF3byQOk3rZdeemmccsopcdJJJ03+qOuf58+fH+nfBz7wga6PdQABAgQItE9AYG1fTa2IwJQCRx99dGy//fZx/PHHT/n5TG+mMJpCaXqlR7u+/OUvf/aQ1atXx2abbRYrV66M1Hqw1157PftZLz8cfvjh1dO4PvrRj/ZyuGMIECBAoGUCAmvLCmo5BNYm8MEPfjBe9apXVbeMWts+072fbjOV2gle+cpXxm9+85s1dr3tttti9913r3pOU+/puuuuu8bn3W6kXts03sc//vFuD7U/AQIECLRQQGBtYVEticBUAum3ldtuu22ccMIJU30843s77rhj3HPPPVXgPfPMM9fY/4wzzoh0j9f9998/Um9rv69DDz003vKWt0T6rbAXAQIECBAQWF0DBAoRSIFyvfXWi1NPPbXrFT/xxBOx8cYbV7es+tGPfvSc21aluwakW1x9+ctfjs985jPVnQhmz54d22yzTdfnSgcceOCB8f73vz88PKAnPgcRIECgdQICa+tKakEEphZIN+L/8Y9/HD//+c+n3mGad9PtqubMmVMF1jvuuCN23XXXZ/dODw5It7JKt6O6/vrrY++9967uFJD+nJ++ONXLa6uttqq+3JUedOBFgAABAgQEVtcAgUIE0o340y2n/vrXv/a04pe97GVx3333xa9+9at4wxve8OwYqcXgq1/9avW0qxRa//GPf8R2220XK1as6OkBBX/+85/jFa94RXWf1357YZ+dpB8IECBAYKwFBNaxLp/JE+hcIH2TPz3p6re//W1Pf6qf6FP97Gc/GyeffHKk8Y455piqFeDhhx+uAutjjz1WfXbrrbfGz372s84nN2nPpUuXVgE43W3AiwABAgQIJAGB1XVAoCCBdCP+FDLTl5q6faWAmr64deGFF0Z6SMDvfve76jeh3//+96s2g4ULF8a8efOq3+Cm1oDJt73q5lwnnnhi/POf/4z0oAMvAgQIECCQBARW1wGBggTOOeecKlz+4he/6HnV999/f3W3gHRP1/Sn/4nXAw88UN2fNd2DdYMNNph4u6v/n3766epOBhdffHHss88+XR1rZwIECBBor4DA2t7aWhmB5wg8/vjj8eIXvziWLVsWO+yww3M+H/Ub6Q4E6S4Gt99++6in4vwECBAgkJGAwJpRMUyFQBMCH/vYx6rbW+X4J/fUspBuZ/XhD3+4CQrnIECAAIExERBYx6RQpklgUALpS1fp1lN33313bLnlloMatu9xUt/r29/+9njooYdiww037Hs8AxAgQIBAewQE1vbU0koIdCyQvnj14IMP9vxN/o5P1OGO6T6vu+22W/W0rA996EMdHmU3AgQIEChFQGAtpdLWSWCSQHpyVbop/+c+97lYsGDBpE9G8+OiRYuqL3Klp2V5ESBAgACBuoDAWhexTaAQgV/+8pdxyCGHxG233RYvfelLR7bqa665pnrU65133hlbb731yObhxAQIECCQr4DAmm9tzIzA0AW++MUvRrqP6rXXXhsveclLhn6++gluvPHGOOigg+K73/1uvOtd76p/bJsAAQIECFQCAqsLgUDhAieddFKk+542HVonwurXv/71OPzwwwuvguUTIECAwHQCAut0Oj4jUIjARGi97LLL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bly75/EGBCAAAR8ECFh9UKywDaQAFXY+Q688AaQBlb8FAACBzAgQsGaGunwNIQUon08ZEQTqJYA0oF5inA8BCMQhQMAahxrXOAJIAbgRIAABpAHcAxCAQBYECFizoFzCNpAClNCpDAkCMQkgDYgJjssgAIEuEyBg7TIqTmwmgBSgmQT/QwACzQSQBjST4H8IQCANAgSsaVAtuU1JARoaGsyUKVNKPlKGBwEIdJUA0oCukuI8CEAgDgEC1jjUKnyNpABjxowxTU1NplevXhUmwdAhAIH1CSANWJ8Iv0MAAr4IELD6IlkBO0gBKuBkhgiBhASQBiQEyOUQgECbBAhY28TCi20RQArQFhVegwAEagkgDailwc8QgIAvAgSsvkiW3A5SgJI7mOFBwCMBpAEeYWIKAhBwBAhYuRE6JYAUoFNEnAABCKxHAGnAekD4FQIQSESAgDURvmpcjBSgGn5mlBDwSSCONGDZsmVmwYIFZsmSJWb16tXm3//+t9l4443NZpttZvr372922203M3DgQLPBBhv47Cq2IACBAhAgYC2Ak/LsIlKAPOnTNgSKTaAzacBf/vIXc/PNN5vf//735rHHHnNB6kc/+lGz4447ms0339xsuummZs2aNeZf//qXef755905+n3XXXc1e+21lxk5cqQLYItNid5nSWDlypXm9ddfN2+99Zbp1q2b6d69u9lqq63c/ZZlP2irfgIErPUzK8QVmplYuHChWb58ufuw12yHZil69+5tdtllF7Plllt2Og6kAJ0i4gQIQKATAm1JAx5++GFz7bXXmlmzZplDDjnEDB8+3M2eKlDdcMMNO7S4dOlSM3/+fPPAAw+Y2267zey5555m1KhRzk5n13ZomDdLR0BB6X333WceffRRN3Ov2XsFq42Nje77UN+Lehh64403zA477GB23313dx8OHTrU7LzzzqXjUfQBEbAW3YP/67/+8O68805zzz33uA/zP/7xj6Zv375mwIAB7glST5L643311VddDlUFrFpeGzx4sDnxxBPNe9/73lYkkAK0QsILEIBAnQRqpQEHHnigOfPMM82LL75ozjjjDPdPs1txDwUfU6dONdddd52TD1xzzTXm0EMPjWuO60pC4IUXXjDXX3+9uemmm5yURN9zzcGoHor0fVh7rFq1al1Aq6B29uzZbpb/nHPOMSNGjHCylNrz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)\n",
        "\n",
        "\n",
        "\n",
        "> We want to know whether there is a path from $s$ to $t$ in the given graph $G$.\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "The adjacency list representation for this graph is as follows -\n",
        "\n",
        "\n",
        "*   a : [b,s]\n",
        "*   b : [a,s,t]\n",
        "*   s : [a,b]\n",
        "*  t : [b]\n",
        "\n"
      ],
      "metadata": {
        "id": "QX7Xp3YOBh4E"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Exploring a graph\n",
        "\n",
        "In order to find whether there is a path from $s$ to $t$ in the given graph, we will explore the graph starting from vertex $s$ by following edges of the graph. If our exploration leads us to $t$, we have found a way to go from $s$ to $t$ in the graph!\n",
        "\n",
        "There are primarily two ways of exploring paths in graphs -\n",
        "\n",
        "\n",
        "*   **Depth** based exploration\n",
        "\n",
        "    Go as deep as you can along any path, and then track back to explore different paths (again in a depth oriented manner).\n",
        "\n",
        "* **Breadth** based exploration\n",
        "\n",
        "    Look at all neighbors of the starting vertex and then proceed to explore the graph in frontiers/waves.\n",
        "\n",
        "    For now, we will focus on the depth based exploration called Depth First Search.\n",
        "\n"
      ],
      "metadata": {
        "id": "tK59IM1cHHO2"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Depth First Search\n",
        "\n",
        "Main idea -\n",
        "\n",
        "* Start from a vertex of your choice and explore the graph in a depth oriented manner. That is, go as deep as you can along a path until you cannot go any further.\n",
        "\n",
        "* Then, track back and explore a different path until you cannot go further.  \n",
        "* Repeat this process until the entire graph is explored."
      ],
      "metadata": {
        "id": "rgj-AY64IscY"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "![Screenshot 2026-02-25 at 1.39.23 PM.png](data:image/png;base64,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buHChaL/9L62bdvKQQcdJN27dzf3RluH1iOAAALJFCBAS+a40+uABebMmSPjx4+XiRMnyvLly6Vbt27SoUMHadOmjbRs2VK22Wabolv4559/yuzZs02QN336dJk6dao0b95cevbsKaeccoo0bty46DK5AQEEEEAgGAECtGDcqTWBAps2bZJJkybJsGHD5JtvvpGTTjpJevXqJZ06dZKtt97adZHVq1fLW2+9ZYJADQTLyspkwIAB0rFjR9frokAEEEAAAXcFCNDc9aQ0BKoIaKA0atQoeeihh0wgdvnll8uZZ55p6ylZlcILPKDvsD3xxBPyyCOPmLSpBmp9+vSR6tWrF1gClyGAAAII+ClAgOanNnUlTmDMmDGiAVmrVq1k4MCB0rVrV6lWrVpgDjrRYNy4ceYp3l9//WUCx8MOOyyw9lAxAggggEB2AQK07C4cRcCRwIoVK+SCCy6QL774wgRBnTt3dlSeFzePHj3apDzPOOMMufPOO319oudFfygTAQQQiJMAAVqcRpO+hELghRdekIsvvliOP/54GTp0qNSpUycU7crWiJ9//ln69esn5eXl8vTTT5vZn9mu4xgCCCCAgL8CBGj+elNbjAV+++03E5jNnDlTRo4caV7Kj0p3R4wYIVdddZWcf/75MmTIEKlZs2ZUmk47EUAAgVgKEKDFcljplN8CH3/8sRx33HFmuQydpfm///3P7yY4rm/RokVy7rnnyi+//GLWZdt9990dl0kBCCCAAAL2BAjQ7LlxFwKbBT766CM55phj5OGHH5bTTjtt8/Eo/pFKpeTGG2+U559/Xt577z0hSIviKNJmBBCIgwABWhxGkT4EJlARnD366KNy8sknB9YOtyu+6aabRGegEqS5LUt5CCCAQGECBGiFOXEVAlUE4hqcVXSUIK1Cgv8igAAC/gsQoPlvTo0xEIh7cFYxRARpFRL8FwEEEPBXgADNX29qi4GATgg4+uijJW5pzVxDUxGkTZs2TUpLS3NdxnEEEEAAARcFCNBcxKSo+AusWrVKmjVrJnfccYfZrin+Pf7/Hl555ZWigaluwr7VVlslpdv0EwEEEAhMgAAtMHoqjqLAWWedJevXrzezHKPYfrtt1j63b9/ezFK94oor7BbDfQgggAACBQoQoBUIxWUIvPrqq3LhhRfKvHnzZLvttkscyNy5c6Vjx47mSdq+++6buP7TYQQQQMBPAQI0P7WpK7ICukuApjaHDx8u3bt3j2w/nDZcU7uTJk2SDz/8UEpKSpwWx/0IIIAAAjkECNBywHAYgcoCusbZNttsI0899VTlw4n7e+PGjdKhQwfp2bOnXHfddYnrPx1GAAEE/BIgQPNLmnoiK6Cbnw8cONCkNqO4hZPb8N999515H23GjBnSokULt4unPAQQQAABS4AAjZ8BAnkE1qxZI3vssYc888wz0qVLlzxXJuvUvffeK/pOngZpfBBAAAEE3BcgQHPflBJjJDBy5EgZNWqUzJw5M0a9ct4VDVwbNWpkNlVv27at8wIpAQEEEEAgTYAALY2DLwikC+jEgMGDB0vv3r3TT/BNdAHbH374QcaOHYsGAggggIDLAgRoLoNSXHwE3n77bbngggvkxx9/ZMZilmFdvny5NGnSRL799lt2GMjiwyEEEEDAiQABmhM97o21QLdu3aSsrEwGDBgQ63466dzZZ58tDRo0kLvvvttJMdyLAAIIIJAhQICWAcJXBFTg+++/F323avHixVK3bt3AUbQ9++yzj6N2aF923HFHqVWrlqNyKt/85ZdfSufOnWXp0qWullu5Dv5GAAEEkihAgJbEUafPWxTQBVl1OYnRo0dv8VovL9i0aZP0799fZs+eLZ999pmjqm6//XaZMGGCTJkyRXbZZRdHZVW++YADDhAtO8kL+Fb24G8EEEDADQECNDcUKSN2Au3atZNrrrlGjj/++ED7dskll8hzzz0nn3/+uTRu3NhRW1KplAmiFi5caLZr2nbbbR2VV3HzzTffLD///LOMGDGi4hD/RQABBBBwKECA5hCQ2+MnoOk6ffn9119/ldq1awfWQV3eo2/fvvLyyy/Lcccdl7cd06dPNxuZX3/99Wa/0FwX//7773LggQeaBWZ1yyY3PnPmzJGuXbvKsmXLZKuttnKjSMpAAAEEEi9AgJb4nwAAmQIaGL300ktmja/Mc359X7lypey9997Sp08feeKJJ6pUu2LFCpk2bZqUl5ebdn7wwQeiT8juuusuGTRoUJXrKx945513zOQH3SHBreVDSktLTSDJmmiVpfkbAQQQsC9AgGbfjjtjKqBLa2jAccMNNwTWw4suukiefPJJM1lhr732qtIOfWrVr18/8y6ZzjQdNmyYaOqykABNC2vdurXoBvD6np3uMer0c+KJ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)\n",
        "\n",
        "The adjacency list representation for this graph is -\n",
        "\n",
        "*   a : [b,s]\n",
        "*   b : [a,s,t]\n",
        "*   s : [a,b]\n",
        "*  t : [b]\n",
        "\n",
        "\n",
        "\n",
        "DFS expected behavior -\n",
        "\n",
        " * Let's start from vertex $s$. Since the first edge in the adjacency list of $s$ is $(s,a)$, we will pick this edge to explore a path.\n",
        " * Now, we are at vertex $a$. Since the first edge of $a$ is $(a,b)$, we will pick this edge to further our exploration path.\n",
        " * Now, we are at vertex $b$. The first edge of $b$ is $(b,a)$. Should we go to $a$ next? ... not quite, since we have already visited $a$. Let's try the next edge of $b$ - $(b,s)$. Should we go to $s$ next? ... again, we have already visited $s$. So, let's try another edge - $(b,t)$ is next. Since $t$ is not yet visited, we will pick this edge to further our exploration.\n",
        " * Now, we are at vertex $t$. The first edge of $t$ is $(t,b)$. Since $b$ is already visited, we will pick another edge. But there are no more edges! So, we cannot explore this path ($s-a-b-t$) any further. Let's track back to explore a different path!\n",
        "\n",
        " * We go back to $b$ since that is what led us to $t$. Note that we have already looked at all edges of $b$ - $(b,a)$ , $(b,s)$, $(b,t)$. So, we cannot explore any further paths from $b$. Let's track back!\n",
        "\n",
        " * We go back to $a$ since that is what led us to $a$. We have already looked at edge $(a,b)$, so now let's try the next edge - $(a,s)$. Hold on... $s$ is already visited. So, we will try a different edge of $a$ to explore ... of which there are none! So, we cannot explore any further paths from $a$. Let's track back!\n",
        "\n",
        " * We go back to $s$ since that is what led us to $a$. The next edge of $s$ is $(s,b)$. But, $b$ has already been visited! No luck. Since $s$ has no more edges left to explore, we cannot explore any further from $s$. Let's track back ...\n",
        "\n",
        " * That's it - we have reached the end of our exploration of $G$ as there are no more edges left to be processed.\n",
        "\n",
        " Time to write some code ...\n"
      ],
      "metadata": {
        "id": "g7RzfqLJJrn0"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "def dfs(G):\n",
        "\n",
        "\n",
        "# initialize the visited list to be False for each vertex\n",
        "  visited = [False]*len(G)\n",
        "  explore(G, 0, visited)\n",
        "\n",
        "\n",
        "def explore(G, v, visited):\n",
        "\n",
        "# set the current vertex to be visited\n",
        "    visited[v] = True\n",
        "\n",
        "# for all edges (v,u) - explore u if it is not visited\n",
        "    for u in G[v]:\n",
        "      if (visited[u] == False):\n",
        "        explore(G, u, visited)\n",
        "    return\n",
        "\n",
        "dfs([[1,2],[2,0],[1,0,3],[2]])"
      ],
      "metadata": {
        "id": "Ssa51rH1pWNi"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Draft dfs issues\n",
        "\n",
        "\n",
        "*   No restarts\n",
        "*   Does not help us identify the $s-t$ path\n",
        "\n",
        "\n",
        "Fixes -\n",
        "\n",
        "* Restart if needed - check all vertices!\n",
        "* Keep track of parent of each vertex - helps trace paths!\n",
        "\n",
        "\n",
        "\n"
      ],
      "metadata": {
        "id": "LD4N6VtMqFMR"
      }
    },
    {
      "cell_type": "markdown",
      "source": [],
      "metadata": {
        "id": "mSTWOF2Zsu1p"
      }
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "id": "MCUxCJL2-lvR"
      },
      "outputs": [],
      "source": [
        "def dfs(G):\n",
        "\n",
        "\n",
        "# initialize the visited list to be False for each vertex\n",
        "  visited = [False]*len(G)\n",
        "\n",
        "# initialize the parent of every vertex to be None\n",
        "  parent = [None]*len(G)\n",
        "\n",
        "# explore vertices if they have not been visited\n",
        "  for v in range(len(G)):\n",
        "    if (visited[v] == False):\n",
        "       visited[v] == True\n",
        "       #print(\"entering : \" + str(v))\n",
        "       explore(G, 0, visited, parent)\n",
        "\n",
        "  #print(visited)\n",
        "  #print(parent)\n",
        "  return\n",
        "\n",
        "def explore(G, v, visited, parent):\n",
        "\n",
        "# set the current vertex to be visited\n",
        "    visited[v] = True\n",
        "\n",
        "# for all edges (v,u) - explore u if it is not visited\n",
        "    for u in G[v]:\n",
        "      if (visited[u] == False):\n",
        "# set v to be parent of u and explore u\n",
        "        #print(\"entering : \" + str(u) + \" from : \" + str(v))\n",
        "        parent[u] = v\n",
        "        explore(G, u, visited, parent)\n",
        "    return\n",
        "\n",
        "dfs([[1,2],[2,0],[1,0,3],[2]])"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# DFS code unpacking\n",
        "\n",
        "At the end of dfs(G) - we have -\n",
        "\n",
        "*   visited[i] = True for i = 0,1,2,3\n",
        "*   parent[0] = None, parent[1] = 0, parent[2] = 1, parent[3] = 2\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "\n",
        "Observations\n",
        "\n",
        "*   visited - helps us keep track of vertices that are already visited that prevents indefinite looping!\n",
        "*   parent - keeps track of the parent of each vertex which can help trace out our desired $s-t$ path.\n",
        "* explore - is the function that starts at vertex $v$ and explores the graph from $v$ (it avoids visiting already visited vertices)\n",
        "\n",
        "* explore is a **recursive function**\n",
        "\n",
        "\n",
        "* Every edge of $G$ is processed exactly twice.\n",
        "\n",
        " For example, the edge $(s,a)$ is processed (and pursued) in explore$(s)$ in the first step and then the edge $(a,s)$ is processed (and ignored) in explore$(a)$ towards the end.\n",
        "\n",
        " * At any point in time, the recursive seqeunce of calls represents a path in the original graph $G$.\n",
        "\n",
        "\n",
        "\n"
      ],
      "metadata": {
        "id": "EouMP_ZnSZNB"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# explore subroutine\n",
        "\n",
        "$dfs(G)$ calls explore($s$) through its for loop -\n",
        "\n",
        "explore$(s)$ picked edge $(s,a)$ and called explore$(a)$.\n",
        "\n",
        "explore$(a)$ picked edge $(a,b)$ and called explore$(b)$.\n",
        "\n",
        "explore$(b)$ ignored edges $(b,a)$, $(b,t)$ since $a,t$ have already been visisted. It then picked edge $(b,t)$ and called explore$(t)$.\n",
        "\n",
        "explore$(t)$ ignored edge $(t,b)$ since $b$ was already visited. explore$(t)$ call ended and returned to where it was called.\n",
        "\n",
        "explore$(b)$ had no more edges left to explore so it ended and returned to where it was called.\n",
        "\n",
        "explore$(a)$ ignored edges $(a,s),(a,t)$ since both $s,t$ have been visited. explore$(a)$ ended and returned to where it was called.\n",
        "\n",
        "explore$(s)$ ignored edge $(s,b)$ since $b$ is already visited. explore$(s)$ then ended and returned to where it was called - the for loop in dfs.\n",
        "\n",
        "Since all other vertices have been visited, the for loop ends without any further function calls and the function $dfs$ returns.\n",
        "\n",
        "\n"
      ],
      "metadata": {
        "id": "fvhgmHYEkM-f"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Try it yourself\n",
        "\n",
        "Simulate the dfs algorithm on the following graph -\n",
        "\n",
        "![Screenshot 2026-02-25 at 1.36.37 PM.png](data:image/png;base64,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Tdu3b5fWrVuLPjjWrFmz6NX8jQACCCDgiAAFqiOJZph2CVx88cXy/e9/X+644w67ArMgmmHDhkmLFi2kqKjIgmgIAQEEEEDADwEKVD/UOafTAps2bTLTSm3dutU8ue40RjWDX7dunfTq1Us++ugjadCgQTVbsAgBBBBAIOwCFKhhzzDjs07gpptukvz8fHn44Yeti82WgM455xy54oor5MYbb7QlJOJAAAEEEMihAAVqDrE5FQJ79+6Vk08+Wd566y351re+BUgMgUWLFpnJ+999911x4bWvMRhYjAACCDgrQIHqbOoZuB8CM2fOlPnz58uf//xnP05f5Zz6MJI+lJTOR1vxjRs3lnr16qVzmEr7fvXVV9K8eXNZvHixuR2i0kr+QAABBBAIvQAFauhTzABtEujXr5+ZiF7b/H5+tAAcOXKkrF27VkpKStIKZeLEiabofuGFF6Rp06ZpHaviztreP+6440SPzwcBBBBAwC0BClS38s1ofRTYt2+fudL497//3fcplG6++WaZO3eu6ANJp5xySloqkUhEdFaCDz74wLwR65hjjknreGU7a8GrsxzoxP18EEAAAQTcEqBAdSvfjNZHAW1X69XA1atX+xiFyBNPPCE//OEPRd/cdOmll8aNZfny5aKT5//kJz+J+8CS3lvbsWNHOfPMM01bPu5BE1x58OBBOf744839ui1btkxwLzZDAAEEEAiDAAVqGLLIGAIhMHbsWNGrjffdd59v8X7yySdy6qmnypAhQ2T69OlV4ti1a5e89tpr8v7778tzzz0nK1asMDH/6le/qvGNVy+++KL07t1bnn76aRk0aFCVY6eyQI939dVXy1VXXZXK7uyDAAIIIBBQAQrUgCaOsIMncN5558kNN9wgl19+uW/B672vM2bMMG9qqm4Wgb/+9a8yfPhwcy+pFoeTJ082rftEClQdVIcOHWTPnj2yceNG88rSdAeqV2711ogpU6akeyj2RwABBBAIkAAFaoCSRajBFdArpwUFBaIFoF/t6s8//9zcA3vBBRfI0qVLE8Js3769abEnWqA++eST5paAOXPmmCufCZ0kzkYLFy6U+++/X1auXBlnK1YhgAACCIRNgAI1bBllPFYK6INRnTt3Fr1X06+Ptt61ta/Fad++fRMKI9kC9cCBA6YQ79Spk+j9q+l+dAqr0047zVxFTfdY7I8A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CLFvvPGGFWwh4C6//PKy3XbbyR577CG77LKLrLLKKhU3mqr9ilExIwkknkAQVf8PP/wgL774ojz33HO5v08++UTatWuXm7fwEo2XaWh9oAH6/vvvZdGiRbm5a8GCBbLccstJnz59pG/fvvavd+/esuKKKyaeLTvgjgDuq+nTp8trr72Wu3cWLlwoWNTBfYWE+2i11VbL3XvrrruuXbTp1q1b6FpHdz1lSYUEKKAWEgn5+1tvvSVXXXWV3HnnnXZVYffddxf8YYJeaaWVAtX+yy+/yLx58+Thhx8WPHwgAG+11VZy9NFHy957723r86uAqn0/MjxOAuklUK2q/8knn5QxY8bI5MmTZe21184Jlpi/8GKNF+lKE17SIXRA+PAEXbxs9+vXT4477jjZa6+9KFxUCjNF+V555RV55plncvfEe++9J927d5cuXbrkBFCswDdv3tzeH7iP8ML06aef5gTYd999V2bOnGmPQbPovQBh8aZly5YpopXurlBArdP4PvXUU3L55ZfLE088IQcffLAcccQR9g0Pq6Jhpc8++0wmTZokV155pXz99dcydOhQOeqoo4oKwlTthzUKLJcE4kugElU/VqpuueUWK5h++eWXcuyxx8qhhx4qbdq0cd6x//znP/blffTo0fLFF1/IMcccY1+w11xzTed1scD4EMDq+u23327vMZiJbLvttjmhskePHlYzWEtrYSqHlx+8BE2bNk0g/B544IH2WbjZZpvVUiSvqScBfftgCpHAbbfdZvTtz+hkbi666CKjQmOItfkX/cgjj5iBAwcaXaU1J510klH7sFxm/dHa42pmkDvGDyRAAtkgoGZGRlekjAqEDTo8f/58M2zYMKMrTkZXnsxdd91lVNPSIE+YX/Sl3uy7775GVf7moIMOMipkhFkdy46AgK50muHDhxs1YzNbbLGF0Rcho8JqaC158803zcknn2zU9M1svfXW5o477jA//vhjaPWx4GAEsPmGKQQC+uZmBg0aZDp27GgmTJhgVAURQi3VFwkh9LDDDrMTgr6x2h+nbrAyF198cfWF8QoSIIFUEIAAeMghh9i+qLbF6CqpadGihf2vtumR9vH99983Z555ptFVVPuSje9MySbw7LPPGjXhsC8fuhpvnn/++bp2SLUC5rrrrjO6impfzs477zyjq/d1bQMrK0+AAmp5RlXnwFvg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Hv7jOQg3iVhdh6CK1XxPeIWWEos/1a66knW8CFBAjdF44AcHX4Rz5syRDz74IPdjVHssK5jiTRGCKh4AmPw9ARZCLVZfufswRoPJppBABglACIUwAQEC/yHEQjiFlxAIC2uuuaYVIiBI4IWaiQRIgAT8CFBA9SPD4yRAAiRAAiRAAiRAApEQoIAaCXZWSgIkQAIkQAIkQAIk4EeAAqofGR4nARIgARIgARIgARKIhAAF1Eiws1ISIAESIAESIAESIAE/AhRQ/cjwOAmQAAmQAAmQAAmQQCQEKKBGgp2VkgAJkAAJkAAJkAAJ+BGggOpHhsdJgARIgARIgARIgAQiIUABNRLsrJQESIAESIAESIAESMCPAAVUPzI8TgIkQAIkQAIkQAIkEAkBCqiRYGelJEACJEACJEACJEACfgQooPqR4XESIAESIAESIAESIIFICFBAjQQ7KyUBEiABEiABEiABEvAjQAHVjwyPkwAJkAAJkAAJkAAJREKAAmok2FkpCZAACZAACZAACZCAHwEKqH5keJwESIAESIAESIAESCASAhRQI8HOSkmABEiABEiABEiABPwIUED1I8PjJEACJEACJEACJEACkRCggBoJdlZKAiRAAiRAAiRAAiTgR4ACqh8ZHicBEiABEiABEiABEoiEAAXUSLCzUhIgARIgARIgARIgAT8CFFD9yPA4CZAACZAACZAACZBAJAQooEaCnZWSAAmQAAmQAAmQAAn4EaCA6keGx0mABEiABEiABEiABCIhQAE1EuyslARIgARIgARIgARIwI8ABVQ/MjxOAiRAAiRAAiRAAiQQCQEKqJFgZ6UkQAIkQAIkQAIkQAJ+BCig+pHhcRIgARIgARIgARIggUgI/D9rvKmwSNFn8QAAAABJRU5ErkJggg==)\n",
        "\n",
        "Can you use information from $dfs(G)$ to conclude whether there is an $s-t$ path? How?"
      ],
      "metadata": {
        "id": "kUPXBRRFYEb2"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "\n",
        "DFS simulation tool - https://www.cs.usfca.edu/~galles/visualization/DFS.html\n",
        "\n",
        "(this tool does not use the for loop we have used - and as a result does not restart exploration)\n",
        "\n",
        "other visualizations-\n",
        "\n",
        "https://visualgo.net/en/dfsbfs\n",
        "\n"
      ],
      "metadata": {
        "id": "q3HKV-7cimMr"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Applications of DFS\n",
        "\n",
        "\n",
        "1. $s-t$ connectivity\n",
        "\n",
        "2. Checking number of connected components in $G$\n",
        "\n",
        "3. Checking if $G$ has a cycle (Hw 3)\n",
        "\n",
        "\n"
      ],
      "metadata": {
        "id": "9qJ_k2iWduCH"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Number of connected components\n",
        "\n",
        "**Connected component**\n",
        "\n",
        "For an undirected graph $G$, a connected component is a set of vertices that are all connected to each other.\n",
        "\n",
        "![Screenshot 2026-02-25 at 12.36.31 PM.png](data:image/png;base64,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gAABgdU1QIAAAQIECBAgkLWAwJp1eUyOAAECBAgQIEBAYHUNECBAgAABAgQIZC0gsGZdHpMjQIAAAQIECBAQWF0DBAgQIECAAAECWQsIrFmXx+QIECBAgAABAgQEVtcAAQIECBAgQIBA1gICa9blMTkCBAgQIECAAAGB1TVAgAABAgQIECCQtYDAmnV5TI4AAQIECBAgQEBgdQ0QIECAAAECBAhkLSCwZl0ekyNAgAABAgQIEBBYXQMECBAgQIAAAQJZCwisWZfH5AgQIECAAAECBARW1wABAgQIECBAgEDWAgJr1uUxOQJ5CaxcuTKWLVtW/bv33nvjySefjP/85z8xe/bsmDNnTsybNy/22GOPeM1rXhMbbLBBXpM3GwIECBAYWwGBdWxLZ+IEmhG4++674xvf+EZcccUV8ac//enZULrTTjtVIXW99daLf//737Fq1aq48847qzB7//33V/u9853vjI985COx5ZZbNjNZZyFAgACBVgoIrK0sq0UR6E9g9erVcemll8Z5550Xt9xySxx11FFx2GGHVb853XDDDWcc/NFHH62Ou/DCC6tx3vGOd8TChQtj7733nvFYOxAgQIAAgbqAwFoXsU2gcIF77rknFixYECl0HnvssdXPG2+8cc8qK1asiG9961vxzW9+M/bdd9/qt7WbbbZZz+M5kAABAgTKExBYy6u5FROYUuCZZ56Js88+Oz7/+c/HJz/5yTjxxBNj3XXXnXLfXt587LHHYvHixXH55ZdXAfaQQw7pZRjHECBAgECBAgJrgUW3ZAJ1gSeeeCLmz58fDz/8cFx00UWx22671XcZ2PZll10WRx99dKT+1tRyMGvWrIGNbSACBAgQaKeAwNrOuloVgY4FUlg98MADY4sttoglS5bE+uuv3/Gxve74yCOPxH777Re77757fOc73xFae4V0HAECBAoREFgLKbRlEphKYHJYvfjiiyN947+p19///vd461vfKrQ2Be48BAgQGGMBgXWMi2fqBPoRSD2rBxxwQGy00UbRdFidmPdEaE2/bT3ttNMm3vY/AQIECBBYQ0BgXYPDBoFyBFL/aPrm/q9//evqxv+jWvlDDz0Uu+66ayxdujT22WefUU3DeQkQIEAgYwGBNePimBqBYQmkp1SlJ1JdffXV1Z/kh3WeTsf93ve+FyeffHL14IH0xCwvAgQIECAwWUBgnazhZwIFCKRWgDe+8Y3xpje9Kb70pS9ls+L0cIFtttmmunNANpMyEQIECBDIQkBgzaIMJkGgOYErr7wyjjnmmEiPXG3yS1YzrfAvf/lL7LDDDvH73/8+tt5665l29zkBAgQIFCQgsBZUbEslkAQOPvjg6rern/jEJ7IDOfLII2O77bar2gOym5wJESBAgMDIBATWkdE7MYHmBf74xz9WDwV44IEH4oUvfGHzE5jhjDfddFOkJ2A9+OCDjdwPdobp+JgAAQIEMhEQWDMphGkQaELgU5/6VKRHpH77299u4nQ9nWPPPfesHuF6xBFH9HS8gwgQIECgfQICa/tqakUE1irw6le/Or72ta9VN+xf605dfvDUU08N9Lehp59+etx1112R7hzgRYAAAQIEkoDA6jogUIjAk08+GS94wQvib3/7W2yyySZ9rTqNcdZZZ8Xll19efXkr3SLr3HPPjdRykO5C8N73vrfn8a+99trqS2EptHoRIECAAIEkILC6DggUInDDDTfEggUL4g9/+ENfK053FzjooIPi8ccfrx48kG5H9YMf/KAKmSkUb7755lUo7vUkq1atik033TQeffTR6ilcvY7jOAIECBBoj4DA2p5aWgmBaQXOPvvsSF9qWrJkybT7TfdhCruve93rqj7YdHus9EjVide+++4b1113Xbz5zW+uHkgw8X4v/++0005Vn226X6wXAQIECBAQWF0DBAoRWLRoUdUK8IUvfKHnFb/tbW+LK664Io477riqF3byQOk3rZdeemmccsopcdJJJ03+qOuf58+fH+nfBz7wga6PdQABAgQItE9AYG1fTa2IwJQCRx99dGy//fZx/PHHT/n5TG+mMJpCaXqlR7u+/OUvf/aQ1atXx2abbRYrV66M1Hqw1157PftZLz8cfvjh1dO4PvrRj/ZyuGMIECBAoGUCAmvLCmo5BNYm8MEPfjBe9apXVbeMWts+072fbjOV2gle+cpXxm9+85s1dr3tttti9913r3pOU+/puuuuu8bn3W6kXts03sc//vFuD7U/AQIECLRQQGBtYVEticBUAum3ldtuu22ccMIJU30843s77rhj3HPPPVXgPfPMM9fY/4wzzoh0j9f9998/Um9rv69DDz003vKWt0T6rbAXAQIECBAQWF0DBAoRSIFyvfXWi1NPPbXrFT/xxBOx8cYbV7es+tGPfvSc21aluwakW1x9+ctfjs985jPVnQhmz54d22yzTdfnSgcceOCB8f73vz88PKAnPgcRIECgdQICa+tKakEEphZIN+L/8Y9/HD//+c+n3mGad9PtqubMmVMF1jvuuCN23XXXZ/dODw5It7JKt6O6/vrrY++9967uFJD+nJ++ONXLa6uttqq+3JUedOBFgAABAgQEVtcAgUIE0o340y2n/vrXv/a04pe97GVx3333xa9+9at4wxve8OwYqcXgq1/9avW0qxRa//GPf8R2220XK1as6OkBBX/+85/jFa94RXWf1357YZ+dpB8IECBAYKwFBNaxLp/JE+hcIH2TPz3p6re//W1Pf6qf6FP97Gc/GyeffHKk8Y455piqFeDhhx+uAutjjz1WfXbrrbfGz372s84nN2nPpUuXVgE43W3AiwABAgQIJAGB1XVAoCCBdCP+FDLTl5q6faWAmr64deGFF0Z6SMDvfve76jeh3//+96s2g4ULF8a8efOq3+Cm1oDJt73q5lwnnnhi/POf/4z0oAMvAgQIECCQBARW1wGBggTOOeecKlz+4he/6HnV999/f3W3gHRP1/Sn/4nXAw88UN2fNd2DdYMNNph4u6v/n3766epOBhdffHHss88+XR1rZwIECBBor4DA2t7aWhmB5wg8/vjj8eIXvziWLVsWO+yww3M+H/Ub6Q4E6S4Gt99++6in4vwECBAgkJGAwJpRMUyFQBMCH/vYx6rbW+X4J/fUspBuZ/XhD3+4CQrnIECAAIExERBYx6RQpklgUALpS1fp1lN33313bLnlloMatu9xUt/r29/+9njooYdiww037Hs8AxAgQIBAewQE1vbU0koIdCyQvnj14IMP9vxN/o5P1OGO6T6vu+22W/W0rA996EMdHmU3AgQIEChFQGAtpdLWSWCSQHpyVbop/+c+97lYsGDBpE9G8+OiRYuqL3Klp2V5ESBAgACBuoDAWhexTaAQgV/+8pdxyCGHxG233RYvfelLR7bqa665pnrU65133hlbb731yObhxAQIECCQr4DAmm9tzIzA0AW++MUvRrqP6rXXXhsveclLhn6++gluvPHGOOigg+K73/1uvOtd76p/bJsAAQIECFQCAqsLgUDhAieddFKk+542HVonwurXv/71OPzwwwuvguUTIECAwHQCAut0Oj4jUIjARGi97LLL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bly75/EGBCAAAR8ECFh9UKywDaQAFXY+Q688AaQBlb8FAACBzAgQsGaGunwNIQUon08ZEQTqJYA0oF5inA8BCMQhQMAahxrXOAJIAbgRIAABpAHcAxCAQBYECFizoFzCNpAClNCpDAkCMQkgDYgJjssgAIEuEyBg7TIqTmwmgBSgmQT/QwACzQSQBjST4H8IQCANAgSsaVAtuU1JARoaGsyUKVNKPlKGBwEIdJUA0oCukuI8CEAgDgEC1jjUKnyNpABjxowxTU1NplevXhUmwdAhAIH1CSANWJ8Iv0MAAr4IELD6IlkBO0gBKuBkhgiBhASQBiQEyOUQgECbBAhY28TCi20RQArQFhVegwAEagkgDailwc8QgIAvAgSsvkiW3A5SgJI7mOFBwCMBpAEeYWIKAhBwBAhYuRE6JYAUoFNEnAABCKxHAGnAekD4FQIQSESAgDURvmpcjBSgGn5mlBDwSSCONGDZsmVmwYIFZsmSJWb16tXm3//+t9l4443NZpttZvr372922203M3DgQLPBBhv47Cq2IACBAhAgYC2Ak/LsIlKAPOnTNgSKTaAzacBf/vIXc/PNN5vf//735rHHHnNB6kc/+lGz4447ms0339xsuummZs2aNeZf//qXef755905+n3XXXc1e+21lxk5cqQLYItNid5nSWDlypXm9ddfN2+99Zbp1q2b6d69u9lqq63c/ZZlP2irfgIErPUzK8QVmplYuHChWb58ufuw12yHZil69+5tdtllF7Plllt2Og6kAJ0i4gQIQKATAm1JAx5++GFz7bXXmlmzZplDDjnEDB8+3M2eKlDdcMMNO7S4dOlSM3/+fPPAAw+Y2267zey5555m1KhRzk5n13ZomDdLR0BB6X333WceffRRN3Ov2XsFq42Nje77UN+Lehh64403zA477GB23313dx8OHTrU7LzzzqXjUfQBEbAW3YP/67/+8O68805zzz33uA/zP/7xj6Zv375mwIAB7glST5L643311VddDlUFrFpeGzx4sDnxxBPNe9/73lYkkAK0QsILEIBAnQRqpQEHHnigOfPMM82LL75ozjjjDPdPs1txDwUfU6dONdddd52TD1xzzTXm0EMPjWuO60pC4IUXXjDXX3+9uemmm5yURN9zzcGoHor0fVh7rFq1al1Aq6B29uzZbpb/nHPOMSNGjHCylNrz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)\n",
        "\n",
        "\n",
        " The graph above has 1 connected component - $\\{s,a,b,t\\}$ since all vertices are connected to each other.\n",
        "\n",
        "\n",
        " ![Screenshot 2026-02-25 at 12.36.41 PM.png](data:image/png;base64,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)\n",
        "\n",
        " This graph has 2 connected components - $\\{s,a,b\\}$ and $\\{t\\}$ since all vertices $s,a,b$ are connected to each other while vertex $t$ is not connected to either of them and is in a connected component alone.\n",
        "\n",
        "\n",
        "How can we modify the code of $dfs$ to count the number of connected components in $G$?\n",
        "\n",
        "Try to think of how $dfs$ behaves on graphs with 1 connected component vs graphs with multiple connected components.\n"
      ],
      "metadata": {
        "id": "OQMrogVwkrFj"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "#Cycle testing\n",
        "\n",
        "In the homework, you will write a function that tests whether a given input undirected graph $G$ has a cycle.\n",
        "\n",
        "What is the main idea?"
      ],
      "metadata": {
        "id": "fFvsMaTdk5WE"
      }
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "NN0T8wAHS7bu"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}