From a25e481fb6a69d03d71aa38212367a3278cfbcde Mon Sep 17 00:00:00 2001 From: Enayatullah Date: Fri, 13 Nov 2020 19:08:49 -0800 Subject: [PATCH 1/4] Start Day1 --- .vs/slnx.sqlite | Bin 0 -> 90112 bytes projects/graph/graph.py | 19 +++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 .vs/slnx.sqlite diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..ada253c0978ab30672ad8048750f76f36b43c268 GIT binary patch literal 90112 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 F{{?k-hW7vf literal 0 HcmV?d00001 diff --git a/projects/graph/graph.py b/projects/graph/graph.py index 59fecae4b..606050b5e 100644 --- a/projects/graph/graph.py +++ b/projects/graph/graph.py @@ -10,16 +10,19 @@ def __init__(self): self.vertices = {} def add_vertex(self, vertex_id): - """ - Add a vertex to the graph. - """ - pass # TODO + self.vertices[vertex_id] = set() def add_edge(self, v1, v2): - """ - Add a directed edge to the graph. - """ - pass # TODO + if v1 in self.vertices and v2 in self.vertices: + self.vertices[v1].add(v2) + else: + raise IndexError("Vertex doesn't exist in set.") + + def is_connected(self, v1, v2): + if v1 and v2 in self.vertices: + return v2 in self.vertices[v1] + else: + raise IndexError("Vertex doesn't exist in set.") def get_neighbors(self, vertex_id): """ From 2d26dc1bf00e87b1295ca9bfaa0861cd2fa900a1 Mon Sep 17 00:00:00 2001 From: Enayatullah Date: Sun, 15 Nov 2020 22:35:02 -0800 Subject: [PATCH 2/4] Day 1 completed --- .vs/Graphs/v16/.suo | Bin 0 -> 36864 bytes .vs/slnx.sqlite | Bin 90112 -> 90112 bytes projects/ancestor/ancestor.py | 3 - projects/graph/graph.py | 141 +++++++++++++++++++++------------- 4 files changed, 88 insertions(+), 56 deletions(-) create mode 100644 .vs/Graphs/v16/.suo diff --git a/.vs/Graphs/v16/.suo b/.vs/Graphs/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..7a491cbccf38de0ff86945bb2610b6e96f6266aa GIT binary patch literal 36864 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 literal 0 HcmV?d00001 diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index ada253c0978ab30672ad8048750f76f36b43c268..923b7ec801da7a3a72c8157061b384a86aa91d45 100644 GIT binary patch delta 2653 zcmZWrTWr%-7`92`7`1flU?4G>HjqOw%TM0U=GA#>RlXpdloxX%7QULi>*sJEg6i&;R+a z-}%oub}!zxT)b_$Qbh-@R_~<)H%^b$(%tyG+DfjcqpP#4v#zVFzpJmmyF2$+?Gi`N zrkBxTywX|+X9Qr*7VDyD@uthnT`U#HY@*jMO~cT1l4 zSxHXDplXAj%(FS)AX$=9tM$H3Yvy1?_*(OpOfozpkQo@3@)m}wplwVloKbY;?8%B| zhVqj+$EH?0S8OC|8>2{3F`TsMeB4b8NT3d;-+xwHEQb^stp(^;Z!CmwB^@w_{hP4?to_oYl4NftXb0shwfAsV5o8^Ev6EN z4lfNhGll)|?_iTI)(_Rx71H_h=?eQNo$%=CaA?S{*YvKbY1f^~JVs4JhrbxA(F@%l za#!XHm6aQwNRP&^hZ^-QTDqo$O?N6QF#-);1IJL^&@lY>1^2A(=wsKUu6nyC3yNaa-J2W?)dwc6CvCEjkp%@7GpveIy69DDCr8J|^yS^ev?@zR zih9IQJQ!m_Mjda9i?X7&DMDC|jvFqxqt5azX7!hc;HSmJ(d&iw9&MLKV0ah(|Bp2mQLa4fJy9F?55A)U5mB!1P%d;cy@79 z)wrDk7FsbyP~XmIfO@T{B9Z%Hv5`K>3RD>?hqFuQ#1**Rafo?CgMty4JGNdsgxt}h zHWF9hM#1f_P|XMqFH~8AcH}*U>+V+2)?Dx1HoA)=I$lwz3gFXn{$EYo^x9{58Lhf&$Z9h!rtN@v!A%!E-U*b8)M()F0)na z2z$c0z+PaJY>V@EF3x?;eagPiW!VLM;C`>0Yg~W9W_jS4g$fZka!HYVQuPnq3}^?# zu~>`6HK~{z7voP!og~YU|hC)*?Xw>#g79@XRdnnv6<OD6HthwsfwPE&x^zUknXHU_XpDUXTQEow1C((r+WI%5oAeI`gX zEfrxa!uMK4CNHgRrg598f<6KBOb~%AK&#bMPG|7SA0x9s84;CAR6rwMc*e*Rm_+l_ zSVba|_fW%m5A`(hAk#_UVa9!lb;6M%%25p z;->&>_$;80R{_g-1<=XMfDAurG0}7|j<3Jy;UyyXrZr4ynAGr$h7%f!8jfq2z@;mD rb_hfc#x#s-7|}4S;b{#+8jfi=s^N%+r|{(!_y>;yBAMLMN>Ap0Q`9sg delta 2249 zcmZ8iOKclO7~YBPjmL3z6UVQ_aUADm=iyi5CT*HDjuTTzW11GY@G_3Qb{5&Y?(QbE zNF_aTBG4h?zy(em3aTojN=QWn0isS)REY~x3+<_*s?-P}#DNMiyY{Y)rP1fv|NH*O z{4?XZylc3;Yk1!Uj34wa0^{{JUiW|q`o_~kPlk?!kA(Xp$7jNknaFhcch5cz66G&L z?w+l8pL;L<7w0@i5*`4_bBTqeWFlD14jX@|GWKbbaA9UcVhh32#Ua(+J4F&cY?l~O zO67%gX}ytk9&L)J`8lE_;l_S77qq&pC##vz%ge6WS~*9W+y~XPJrR-^#O`S>gA?-t zPO5R}`m#G-4bU5EsII{CrJ!^{@~J_3gN-c9G5=#x$LVghq|j++twWCSYTa+~LLrN@ z4yeKGW7P%;JYQ_IJ4c(=pm{j`Ri;!(Uu5JJXiS%nBy7M)7SknBHEwaX5t8VZ*PPvK z6x)Vnvyl|}44W<()OxH#B;mkjrNNrjF({XB)cU3o&H=d?Ok_71PTCNdI^$K!jMfi@ zSP`0b*TQvI!`03Ym$$3oP%7E2=5#dWG^rwsUCXK2(C5iMHPM}W%(Q4ys4Avnhp96y|2XQcWRRRmRe;h0tu>W|HvYZV72F z%NIFD6!ofnsEs71F{Sh*ATT9?5%FfGC6?#vsveVkb&TY6RmO6Xz-uAAkR&3Q%rYfu zJ&(M|$@H3O&II8jSb;kzw%bi#F|V7?nP<(Gwx?|mjj?iP$M>x*{sfBO8UfFi z*;@gC|7Sm{OoA}luXsQRJ;oSBZF`d-fado+U;?Euj-#!;QP-G>fDU{=0RSQ+y;M>F zPPIbYX!*OnK@hYqVMQ0d7g&+aiFm+h3|bfK*0r372aFzr{y3UF7zu}W9`?-MW^O@PJV-^v|O!2O|?MIC2ux!^27@R!n7hj>G%IWEIG_p-lkmCX>)}tQm@dfl+S#Z&e1pMPpM1v234W9 z(bAnM-1MZ`(y8;wJxK{nWXtmi*_Y&B zoOrQXYD3O=RUs`@6;e!AHQ)jTglE4&5+lZ2n2PvUE0^VzPN=j?#IR54kYr z!mP}tQY^ 0: + currNode = queue.popleft() + if currNode not in visited: + visited.add(currNode) + print(currNode) + for neighbor in self.get_neighbors(currNode): + queue.append(neighbor) - def dft_recursive(self, starting_vertex): - """ - Print each vertex in depth-first order - beginning from starting_vertex. + def dft(self, starting_vertex): - This should be done using recursion. - """ - pass # TODO + visited = set() + stack = deque() + stack.append(starting_vertex) + while len(stack) > 0: + currNode = stack.pop() + if currNode not in visited: + visited.add(currNode) + print(currNode) + for neighbor in self.get_neighbors(currNode): + stack.append(neighbor) + + def dft_recursive(self, starting_vertex, visited=set()): + + visited.add(starting_vertex) + print(starting_vertex) + for neighbor in self.get_neighbors(starting_vertex): + if neighbor not in visited: + self.dft_recursive(neighbor, visited) def bfs(self, starting_vertex, destination_vertex): - """ - Return a list containing the shortest path from - starting_vertex to destination_vertex in - breath-first order. - """ - pass # TODO + + queue = deque() + queue.append([starting_vertex]) + visited = set() + while len(queue) > 0: + currPath = queue.popleft() + currNode = currPath[-1] + if currNode == destination_vertex: + return currPath + if currNode not in visited: + visited.add(currNode) + for neighbor in self.get_neighbors(currNode): + newPath = list(currPath) + newPath.append(neighbor) + queue.append(newPath) def dfs(self, starting_vertex, destination_vertex): - """ - Return a list containing a path from - starting_vertex to destination_vertex in - depth-first order. - """ - pass # TODO + + stack = deque() + stack.append([starting_vertex]) + visited = set() + while len(stack) > 0: + currPath = stack.pop() + currNode = currPath[-1] + if currNode == destination_vertex: + return currPath + if currNode not in visited: + visited.add(currNode) + for neighbor in self.get_neighbors(currNode): + newPath = list(currPath) + newPath.append(neighbor) + stack.append(newPath) def dfs_recursive(self, starting_vertex, destination_vertex): - """ - Return a list containing a path from - starting_vertex to destination_vertex in - depth-first order. - This should be done using recursion. - """ - pass # TODO + visited = set() + + def dfs(path): + currPath = path[-1] + + if currPath not in visited: + visited.add(currPath) + if currPath == destination_vertex: + return path + for neighbor in self.get_neighbors(currPath): + newPath = path[:] + newPath.append(neighbor) + foundPath = dfs(newPath) + if foundPath: + return foundPath + + return None + + return dfs([starting_vertex]) + if __name__ == '__main__': graph = Graph() # Instantiate your graph @@ -145,4 +180,4 @@ def dfs_recursive(self, starting_vertex, destination_vertex): [1, 2, 4, 7, 6] ''' print(graph.dfs(1, 6)) - print(graph.dfs_recursive(1, 6)) + print(graph.dfs_recursive(1, 6)) \ No newline at end of file From 4c9d80ec94f7ae0e5c714ac7e45a6cca9c12f3a9 Mon Sep 17 00:00:00 2001 From: Enayatullah Date: Sun, 15 Nov 2020 22:35:17 -0800 Subject: [PATCH 3/4] Day 2 completed --- .vs/slnx.sqlite | Bin 90112 -> 90112 bytes projects/ancestor/ancestor.py | 48 ++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 923b7ec801da7a3a72c8157061b384a86aa91d45..dfeea29751ae6afa8382850d5bce6d432b242cef 100644 GIT binary patch delta 639 zcmXv~O-NKx6u$Re-+S})-gC8PMq);1lt4G7j|wUX0*w}J`f(M)G&y%_Xc~3Y$kCa3 zPw5AuEG|S5QV|ISVezDui$RK-#-vRUq-oG13JfYJs71afEzb9S=bZ1H#b=dNtE65H z;mEac2aY^BHWi_hi2vYA{1ucbcH=VlLdz#vAlWHV)z1T_`ZAH$` zhcwe~G}~A%&POz}&SZ&)M_x z0Z|ZgK3DQeI9RAgMj(KF7~_FdPPk>5HAXO3jU0Qy!bOBo2kpW9E8oe3u#Np;ova0B z=`6j$m*Ec0F+bDc5xocrIL{{_L?1&pbkQ;tAWeIqg&(Bvd6GZnci{>jf-;@rI^V~> z(4YJn{9@l>FYo5R*#c}}AK?Jo4nA0A?^uCNvwn6|rr*F?4sUCcLDHs(cs8991B0=6 zre}?MvuK==1|^R}MQ((IvK9BUmxf_&SZPlf6!sN-#Ey9u_>zdpPRhh;x56iZxH? KoXWQyeg6PI8n&hY delta 638 zcmZoTz}j$tb%Hdb>_i!7M%j%C%j9|HG4OxpzsrA$e+&P-&4LC!{9+=k%({%hmAOgz zIWDPbnR%HdnfZB@o44qzG_dSEHrZ+Oo%I?5%$6Juli3dxi?Eww!p(vL%h_1CpD}Vz zHao5dWH8*Eyzh)8yP*gtkiB#Ay)&}xhJqmW)XD3Q%YYP=PCkEJR0+t4;gptU@a45au-G<^+mMY;HW)z!=Tv&0xuMl9B&4zXiV-pE2)mUKd_l#ohC+3 zpb#g>-zAen?)?!1`dlnE4;+$3KsHw(C`=0`r`?~;#($K-l5go`_6JInZ65@R@U6y# zn-vuv@|pn^ni*CCNdv 0: + return self.queue.pop(0) + else: + return None + def size(self): + return len(self.queue) + +class Graph(): + def __init__(self): + self.verts = {} + def add_vertex(self, vertex_id): + if vertex_id not in self.verts: + self.verts[vertex_id] = set() + def add_edge(self, v1, v2): + if v1 in self.verts and v2 in self.verts: + self.verts[v1].add(v2) + +def earliest_ancestor(ancestors, starting_node): + + g = Graph() + + for i in ancestors: + g.add_vertex(i[0]) + g.add_vertex(i[1]) + + g.add_edge(i[1], i[0]) + + q = Queue() + q.enqueue([starting_node]) + longest_path = 1 + earliest = -1 + while q.size() > 0: + path = q.dequeue() + v = path[-1] + if(len(path) >= longest_path and v < earliest) or (len(path) > longest_path): + earliest = v + longest_path = len(path) + for next_item in g.verts[v]: + copy = list(path) + copy.append(next_item) + q.enqueue(copy) + return earliest \ No newline at end of file From d07b1e29cf3d0b67111bb1e554d01a1a1e7c9cab Mon Sep 17 00:00:00 2001 From: Enayatullah Date: Tue, 17 Nov 2020 19:22:31 -0800 Subject: [PATCH 4/4] Da3 --- .vs/Graphs/v16/.suo | Bin 36864 -> 44032 bytes .vs/VSWorkspaceState.json | 10 ++++ .vs/slnx.sqlite | Bin 90112 -> 90112 bytes projects/social/social.py | 112 +++++++++++++++++++++++++------------- 4 files changed, 84 insertions(+), 38 deletions(-) create mode 100644 .vs/VSWorkspaceState.json diff --git a/.vs/Graphs/v16/.suo b/.vs/Graphs/v16/.suo index 7a491cbccf38de0ff86945bb2610b6e96f6266aa..981367cfe95c1bc2628cd0d179c711bfe9814c3d 100644 GIT binary patch delta 4498 zcmd^CeQaAr65qA`9LIStafp*P&WG)M(2%6mNt3pSw9Tby3uzoXO{!}}pqMm;6hnez zLq1#_PWQ(Nbmi&+DkMI7MD0nZL(m!_@khAyIEf%3zV3wh=MIo6PC9`El`Iqx4ZnHu zGl`lO6`|7sBmKO)v$OkVXJ%)|(SADI5&^O!`2970&omB7Wt#YN_tfit}?NLrMB zSwvowJKy2{`tbv^@5^g>-bs_DNg1HDDUozrXxtpMVWm#=Zb6OK0Ga19AIKqTS(CI| zETv!`?`=c3w+7v{KoBq%a_hx-4NwcXGIJiZ)qopV2Q&i9*KprYXDqk0c4B5HunX7? z+yvYVbOC#SZh%kNgEjzE^7we~Uz4V8Y1a>V@^S46J|s+{AJTe-Ln`_qX(6X9p+VYE zNkzW^;1A`ZwF7y84af%yfop(XzzGxsB|sTq?7?k6#^pc-PzA7QjCnRq-FIU;Xw&GV z?I!I;@Y;Z_01g(=_M+1VWKQ}*(ymGidF@5yuv_@d_M$pNSyq@8E8@lIGgvY92lwfA zdwD-QhBaZ0*eQk}M+G~FwK90zva{9$*8>{>cE|Gh7L4f~o5#=0Z5V9N2>c3dN2YK1 zm1PXSa(}sB{g7q9>YE?$eJ!a*Wj)1w0hPlL!a8wq%Ihet_N|Cl>7kgGDCLNpXK|3e z57uz|3$d8*N*432W-&##7%gaBnjY6nMnNwd>Ghhp=gh4MUStNF-7ez z_>Ahi=1HrGj<_wz)i3E>^9C+hKRBQgD10lY{VXY3MZ)3v{3N1bWqyS!wSiKiWMdX zIFoRuVCsVn24Rbc7!mi2VQ~nyh~OsmVH_4Q5e08V+zU=O+7RY;F$QU&aF5D<=ZDCcvT`V%ucygtZl)atTa&GwDr@gqCL)U|R@7(XL~N{5 zICGn5p}31)D{ZCml4;pZ3ng9bNop@gMHHx=&MN%9VG%e(4G;;%V|V9M;B028To8fu)Ar)eUskGb2x9 zZiHs5x1{!Y{Zd{=)S`&a%S`3vF70^z=tLXcH_}+R;yVU+<=0b>)_h~4X>-bL7i6a(i}d8vf6Fo>xA3^%K5m z*@)rwOmtskg^VWs(VEx)a{jS@hx%$m&%OL#|Jh9!R+WB!be(BhQZRmm>c^d_k0Qs+ zB?nnjC)->CEnlWi-IuA^>d&M!QSbKMwhiyU_tw8Q+wY)rWj@EwdqWeUXe=BK-IZll z@CD}D!i?(j2-@0xV?&W(WaRL0c&L`ztJcdY+OWT-{Aj$j(HGwp3Xctqt|C@LAN^W0 z#dX<=qw&p+&0Cg)A6P}WlDZpn5psnGrhFOt5wfUW>3H!u-NL{4EP92c_dEK0q`dNI zylGQo%f=-)MK0qeXU3=M(Rj<|#-Sz|e#RP7 z4YwvNQsOUF$xrqbdBpmCnK0!W+h#7|NL?b^9Q%R`qRx~2EYfXNR!&~@wzn?z>`=&Z zHhj!ZcLdtV6aO1I`YTfxN8?J?VzW6{x7VNZlK%bJs*c*nKP?^O0tjVN2xZj(%A@Rv zX2+*y=KL}_*-l#~=BdM9MfH0SeSnF@aqb+7myK%Z1x_<=VMB&GpAFG=G|XPmo^o^m2{$ WKmrKF?@rZ^o8-^xgzB;rif;jo^`<)j delta 2234 zcmdT_Uu;uV81K2g?e4nU?K-9#Ti3N+H&&RiX^;_^Tt`Q69qZ~CA<=|EbiPO&rqyKu zS8xv)lZD;ilV)LC2t*STSZ;VhADDjFXd_?0+n^;Vo-*>yy6&`rG{5M&iCE#`~6O{ca`j-a-l2alEZMho}%A^@b}u<8k_m|a_XwUnm8l^2rDhs*S_98 zbMLb|B1o>A2BwrL(TTh=EevGbBbq{HI=qHdZPedNiwIk2)I+HCb7Q9EQ%5(`x{1(0 z;84vpHxdGb7D9*+CqxK*#}+~xp`F0{J89-1<>P5At1lbu?I-U6LXVLcOQqXMKdEyj)daqoKf&XC0tyvPagEG;eI?BmgeroU;3N16d~6Sa z%IJE6P)pcEs3SZ{=pf9cdMZmFf)BN%lki^h^b$DX<&-8YpN^1EeH11~<_yZgQRP}j zm1~a59pyEb8e_h|PU)002bC#tojJ`IVJl%9!Pz&LN>rM(c!AJ|Rc&N$>|;w$iwH9M zkl)2E=HL{^shS8Qua9UPyJXsjjDOl&PbO2rgT#O?>sQA+;|u*R(^9SI>n_yOLJ z#&tHyfwR#rt05<9kZ&0B3(xuqc5}ysADPY5Fe9qaP-sdxXPIzvgSUnjvk^=MUi1rY z5I0sjkqacT-`x$fRmEiUu;wmvdU&^j!lne`?k-V8fONQbjcTpTVbk5^wCKc0CbeJp))qQ9@N8#R&Tut|2-xJo$J(e~2N57nk6$A#RExW~5bdPI>dNp9&PRJJ%5|m<aF)PLwvDN*~Cmih>8KVqlex}h-rg%{s{ zwA-3Lir|8dYfA>k7Yv+>_Oj?a7yoh}z2&3Fuov0I4zw!`TruTs7gnB2c< zrWT*}hmf65V)`AIhF)KXw%Hlp@ow_etgOkh}!_2>?}yW8D$ zG7Zkge@vDb&1poGuStZci6J${KS?H6}Db!2E&+Ivgsvune=mt86PB9mlx9LJ*N!2lWCa*yk z=zXqhSdsSgV_L5y?h`UOh0_E{9O0EIVT^y8@kS!eCBUYfkWJr(Qk#>JUAylof<`n> z(Q}H^$@kYJA&%RT3SZE3p75g>Qw_ltE4pp zff-Y=ZZ!mrIPsH`l1&?H#uBStWwu0-q=|BWU}eQS*o?pmGa_fXXV1 zlT`~obJV{af}ruv>8WzCf0^O-l;-EM>RH+XK^=A%hhTf_Vn+EMyKiO3k?1c6*psgI?2n2Clk;+ZTSw3#gd-%bvjTS(k9&G9?&9bSY4?YW2-3UPq zPAyDiY@hz=;Bu?^cLrOm$LLT~q$C$K9s)BwRTS1r@uSY zWF@*Zw6xw#R9#~uDT}TDJruK+=#q*Q9t%`mWfN^*GlF0pZkT@SnWZxpFu+zwxUEPv zV@ue+APqqjcT3^Kv@{{|s_L}hEk0wvmqs2}cv<09Jj~*8y@;y!8e7K$yNj)h3!Q=k-nu<(wP|qiadLZ2X^Ygl@EQXiSURv(tGs{{ zSC0MCUgI(mrg%HzC-L3^6ztphkcy8Pi?GCjUmp|Nrfg(@Ff=IGmJu`|BT5Qyf$`bu z1WCGIcMnfG>3(JqpMe*B^+B?m_}B9BnxN65rRzmuIX-h(&@WK|Akfe_(BcNZsOl%G3Sq`_pF1nlM&DLFA9&p_huFJ z><4}DuN^GE3XAHYz*pE97vZEE}_ z$imAD6R?%O3i{|Ufqp{wqFQzx^Cx?jK1&~BHZgvt6Me%Tr=OyKr*G)XFNKG~Xdn6j zonT);Id*}53%Su2=0|!voj@P4cbMC34;p2>=nv*1Tg`mO4lps+!`@`BFwZdWF_X+r zW{#O_7xny3;Y^I`W;3y!J)#=uTME3UeSH*Hr@U00srUh1@>e19Qz@A zhE21(*&Xb5b{l@@_n8@{Z OubJjh;p)w0lm7r=PdLp0 delta 1921 zcmZ8iU2GIp6rSns-ks_0%q`pQcKWy5Wm{S>ZRzf|+aU&vr4pc(B9VutaT&YQ?ZEEL zbY@yX6H4NX!~`W*5?)LYjF4zTnlbtUp@~Fj5F}9y5s4ZTH5h9kCNz;4@62?Dx(|CY zd%p9X@7#0mJ@?pR;Mii|-6k?|vU!M1EFAa{hW*S<0{#xK!1K&aGue8XF>kg!B*_fA zl4xZ6deWQIn_JWAE$Q5rjQLyQD@eYHKJD2W=R>5giQFd|h9npL)dWHK;ROPI53j-t z@Go=SvC|M;cy7YS)0a_jP&bn`L-ahy10q4vKvyOuq13G&X{YWUUopQE_HzRc^3w3O z?W4op<${OAa)4;UoLNJ%7;P@2xgQW6*l&oskuPe3I=vR<`YQ5Synro*w(Y6~jw%}8 z)%5IY0qF`t$`xwt1w;x93GyVCQZy{%VQ67j%kxfx=AJe6loUnnHVzvdZj$EiwWuVE z|3gvD?gqD{p55HMld=98K(t`t*A%T(z^d!rWU)<7OEg6(uk~{qE7ssKxK0OAOTrP+ zT7ieub^szuQlKoTy6c?ZAKd_m25ZfQxwXO3cFRqz?q9&Ir>+eU_1JCig6FMIS>;n+ z-#ma@Zxw@q!kj1@vzqu6N!n#*fp-kTu12C25M8(;T_~$1vCG-;u@`r=xB=+MNIbi` zm+^`|gxsJ=3m|H-v{Wv7K6GPb18|7w@kpEdnH-I`uBK~n(ybmcxfpZPq5Nort65*6 zS?vZzVxFewL!XSsU7_2fb&ZZtq}Ge1T{il6H02)Abrlkn8x*PWh@Njf1Vjcm3_Uzr zH}3{=Y(}f(WQ%mHaYEuppHEWw@o8YKWFyTu3nK? z0G}~}0;;AQ6ekVcEsyi#%CTR0)pAR7qK8C%`0fxicwyUK9gi88u&xR(9}~Lgyhx6; za?qf=C>c^wRy5HK#?#JE@Zkaqj?GjtBY3tw2$_Y6Grk(0T_E5S_!vHdf8wF~iy1p` ziaj|-nG5nh(#MBZP*9zz3O~V=qakzUjRP6**3Nf~waL7Il_7hz1w8V%9le_Fm)3s(v25|7F&np*Ibn;I&SFf{y3ViR;b&dU{ho zx_G_QAEM)ZsP#rufCqFci@2qvKM;&(EEmUD(RJx+f{sRMiloVxby2f^y!qZz8MNbB zJ`|oL;U91S#@Gz=53`-=U@wI)g-^pD*)!qSnK~wjI&UX--h)%{Gxz~}0?x8a;g4Vt z4l@tJf5WTnW9AV%2q)kQbBm2IKeM};EK9M=%w6UvbCH>0#+kFs+w3>YCD_I6g(1a~5v> znbIUtF6h&e+Hc|cyd+CTKHmp@DRQ6v?(DE0i|kr3L;0e17t-eV{qy)J;0~~dQ1GY2 z@DBSmyTpFMUS>aM7ub*S3wfVGhn5F72Ye*S^R^wZZO*p+w(YZR*0vejrp 0: + path = q.dequeue() + newuser_id = path[-1] + if newuser_id not in visited: + visited[newuser_id] = path + for friend_id in self.friendships[newuser_id]: + if friend_id not in visited: + new_path = list(path) + new_path.append(friend_id) + q.enqueue(new_path) return visited - if __name__ == '__main__': - sg = SocialGraph() - sg.populate_graph(10, 2) - print(sg.friendships) - connections = sg.get_all_social_paths(1) - print(connections) + sogh = SocialGraph() + sogh.populate_graph(1000, 999) + print(sogh.users) + print(sogh.friendships) + connections = sogh.get_all_social_paths(1) + print(connections) \ No newline at end of file