From d818520aa365929bf3b57002ca96028a4fd06b74 Mon Sep 17 00:00:00 2001 From: mayurishinde27 Date: Fri, 6 Oct 2023 22:50:00 +0530 Subject: [PATCH 1/3] Added Shortest Path Algorithms Using C++ --- Readme.md | 4 +++ ShortestPathAlgos/Dijkstra_Algo.cpp | 53 ++++++++++++++++++++++++++++ ShortestPathAlgos/Dijkstra_Algo.exe | Bin 0 -> 151067 bytes 3 files changed, 57 insertions(+) create mode 100644 ShortestPathAlgos/Dijkstra_Algo.cpp create mode 100644 ShortestPathAlgos/Dijkstra_Algo.exe diff --git a/Readme.md b/Readme.md index 3866700..609886f 100644 --- a/Readme.md +++ b/Readme.md @@ -88,3 +88,7 @@ Basically these are supposed to be my notes, but feel free to use them as you wi - [Welsh Powell Algorithm](graphColoringAlgo/welshPowellAlgo) +### [Shortest Path Algorithms](ShortestPathAlgos) +- [Dijkstra's Algorithm](ShortestPathAlgos/Dijkstra_Algo.cpp) + + diff --git a/ShortestPathAlgos/Dijkstra_Algo.cpp b/ShortestPathAlgos/Dijkstra_Algo.cpp new file mode 100644 index 0000000..b22c0ce --- /dev/null +++ b/ShortestPathAlgos/Dijkstra_Algo.cpp @@ -0,0 +1,53 @@ +// GFG: https://practice.geeksforgeeks.org/problems/implementing-dijkstra-set-1-adjacency-matrix/1?utm_source=gfg&utm_medium=article&utm_campaign=bottom_sticky_on_article + +/*Given a weighted, undirected and connected graph of V vertices and + an adjacency list adj where adj[i] is a list of lists containing two integers + where the first integer of each list j denotes there is edge between i and j , + second integers corresponds to the weight of that edge . + You are given the source vertex S and You to Find the shortest distance of all the vertex's from the source vertex S. +You have to return a list of integers denoting shortest distance between each node and Source vertex S. + */ + +#include +using namespace std; + +vector dijkstra(int V, vector> adj[], int S) +{ + set> st; + st.insert({0,S}); + + vector dist(V, 1e9); + + dist[S] = 0; + + while(!st.empty()) + { + auto it = *(st.begin()); + int dis = it.first; + int node = it.second; + + st.erase(it); + + for(auto x: adj[node]) + { + int adjNode = x[0]; + int adjWt = x[1]; + + if(dis + adjWt < dist[adjNode]) + { + if(dist[adjNode] != 1e9) + { + st.erase({dist[adjNode],adjNode}); + } + + dist[adjNode] = dis + adjWt; + st.insert({dist[adjNode],adjNode}); + } + } + } + return dist; +} + +// Time Complexity: O(ElogV) + + diff --git a/ShortestPathAlgos/Dijkstra_Algo.exe b/ShortestPathAlgos/Dijkstra_Algo.exe new file mode 100644 index 0000000000000000000000000000000000000000..fdcebeceda67bbd219da9aa0eb6d2f61dfbfe34e GIT binary patch literal 151067 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%0DofmrtPqPW2 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 Ym7scfT-^4*9o~YOdN}ZUj)wjJ0Vjy{rvLx| literal 0 HcmV?d00001 From 93c8818953bf82104c139049d0dcd4de11b8ef8d Mon Sep 17 00:00:00 2001 From: mayurishinde27 Date: Fri, 6 Oct 2023 23:16:34 +0530 Subject: [PATCH 2/3] Added test cases --- ShortestPathAlgos/Dijkstra_Algo.exe | Bin 151067 -> 0 bytes ShortestPathAlgos/Test_Cases.md | 81 ++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) delete mode 100644 ShortestPathAlgos/Dijkstra_Algo.exe create mode 100644 ShortestPathAlgos/Test_Cases.md diff --git a/ShortestPathAlgos/Dijkstra_Algo.exe b/ShortestPathAlgos/Dijkstra_Algo.exe deleted file mode 100644 index fdcebeceda67bbd219da9aa0eb6d2f61dfbfe34e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151067 zcmeEv3w%`7wf8>rAOi`R1cIWXjy5PLuOK35)P!V0B6&#?9tsX2nLsooF*yUMAi+tL z)9HBA7Ol6}wo8`r#!R>Z0mgRWPQNt%_xyhvkR5;di}7s7@Yk={ zCFQ<;Me)kYdRuK>&5F9xRkpIy>gpQVw%lo}b5+|at8JMDMYdHn<<2Q1M~+BVSr^(F z%aum5)-;=w9b@cwF^nB$F;c8#7{`_a=|x-yz((PofU5x)Nk`9sliU(6y7ON%Qb-&= zX5jT=%qDP&fN1bjZz2I|%Lw%`ikrzMv9SZt?UE#xMuH9Un<6{c%E&udia#U})iqcN zJma^F6)u}nUMdsHI07`_LY-L!u8?0Eo7OU=P9UD8#%#t#yjF%F;W3S+rA?h7V7t?C ze+t(eTvfP2e&CljWqEx)fk;NyOMlM&HBh;gqFkXvR5%WJzX`|X@@32~CMefc0`RCF z)V3i%jwe^~a%}{MZaLoW5F|Vj-qaLPky(^AO~u>OA1`gr)akQ1FhB~V2DuFP77hyj zNn;6frp`#=>8U_r%T#{v2T}L~$GiS|{=A>?YE`_W92ES+@n+t@(_Fp=74M@U3V%R7 zNc;asf9{@fp3G#Mhk4k|--l+_GZPTU$5VBGveJi6WqVQK-?7ppP- zHBwD2@=laS8G+7S0sQ>iygQK!m4%ZXp2lTyy-xh7O;j@9OUU4q-S>c8IpN)XHPPRE zDX&%uU?CDv^?Zt8B`-#m8fOrKiPu||p!+)jHLE(%U{;k+Xvyi|12ihlH~9ihich`~ zC90Ub#0#m!{ekWS;dxxiXQqn0Un9>eU&U1UOO#KF+&xKKW_>@6v@{NtAU$xsP?u5* z4s^PE;^;Xc4edq6^q73LBN^LbX-H#=DcSeKF%WOha6poKIjcFIOJ^9;+15BhfHFN9 z3553=Dy3-(&pO;6lGkpFA?Gf+soaP>dj1^#M=t!s1i{jIf-fwHVIoy5ZHZG!gCx@Cr}x_ zJn(YwOKoe0eS?OS9vEXo^?Wad>r>>D=G6TE2+t3U&jpotwWj~T_*A5ugFm##0yIbh z>AD%Z9!CZDn8<{l15*`@+I>8QXKbw%;+sYTn`$fI7Nwo4I8g<@!I3Rn8LHNFLQbSS z3lW-7yJzecE?5ia#s%u!LiK_` zu~gtxA5tNlHfU=jo&*3sAi! zEdpc(0Tk-Bzlr?1nMB>mUj6Y+9($a(sk8N{LD}oECrF)&y~ktk0jKl~V%sbd2|V#Vul;+}6}??dVfd%gC}qLk_^RT-PndQ=Obygyfz4Bnf7hzzoJWW1th_&g<$ z+27qtFZ6z&QJWJ0WX!GVKo8STi_nt++S-7C+ zc6ZNO-+gepWLu`>7Y>p~8V~me3-`d{3Ij^XVfc>6czgWL0G>w``)04bGl+c>0Uof) zC=LRsyyg2uKs@$N@1lUR^gX4^-6HY!xaW&y_v~lVKldy{+nxMWdP{j#>GBpzx`{@P z>MbaKb2uT;yd~QOs9AtKCA)%3@sxB)(C*WM^>0PT z2174!xR+X@u>nYBlcTZO(Vxu|g3Zbx8_4BH=NGbmh^OwaXvnee2cj^DBm)=I++OzdhNRvIXO_;X4%kUY+m!vU)`KZ7oUczTVh;Xa%jzd4}n%yPGx&3jO#%XOuE1?L%_^1@+3mDZM1}Pcggj zI(rx2d6#3UxAbfqAB`+8*m^OJ?Ln~z1Z1pxy+v|ezHxmVO=(>h2!v;VfST^P7|7%M z(Cam9QVJoeuG2?hBaK~w@x6Sk4~*|o?>_Z@OuZjf@9(MiF7V3O_!W0g?g=x+K?ZB%=LW`n&s+u9;oJwEDeb>{nf1xz`^C$pIj2ldMgxxP!m)s@rw=N-8C#1u_B1s5sa6DGa8- z>feb?rpV{8(c725bpsB@m{gxy&vU?V$ zSFfN%vduKy6^xpBEk1iPiDPYg2_R2ii~H1YYa@y1T_|n39OW)Wxm;XpV?M9`VfU#G z*3GSaOc~zVeKSm3DE%0yAbj_=pb)i9ur}U>Y|&JypqAdMXx8Ktjdi89@d?mTV>J`K z>+sdetHD<4{s7(Id%M&wU8%!f18hqgs^noOOxbCeG@^{z>krnsFkqp+)yip(40f#h zr$BB;ZR}mBH=ox~RPTXrgc>}2!1LWd7Kq83etk#2r0`X3QY!muz3c*FXIO$dbZ3%i zG>x)%wa1WFb?!^|D@(wA{Xr!)**6Z{F^->BJA-?_#I3*E1bW^;7@LJkhqo%7-4@89 zywjadx3{_{0|~%-y1mtXkYs%F$wkUuEE(8X;ZL4i^plj%U(&O+u^ZJbN@=nFoDBL1 z61$*qX8n0e%ZYYLHlo}Uuh?Ys$Ob@9v^NmMaB?p#0nww09+@Psa__gm18nSJ=n@Dt ztiM4J{ABWeWNzHSZ|}E^X4c=pcm$LX9?>4-lCKkw2R5D|JlAEMt$|8N;EyJHw4G?> z5~XdOfF869yc?`PN4UcpR*xsCkxFT4I&`0T7ek8Er9pBMX}Fn4?)(zYRQ+v9Xh1Kd znZo6W(kq$+ogCstgq>zm#!xPdqT9VM?#ni6FU+mRdM>T4O=Ipe0r`riBXV3I=_fqx zmt4o;vTJSd=OtgjuJ?_-vn}NakI6D5Pf` z!~mLPc|?bqCs3lh&mfP&LW+E=dtVY~aOYhpXHQZ>I@|bn`s@D2_~6GWM?7vyKpX?+ z^=+ov@4NmMMghhX$Wc%=X!?t^O@Uy)1;D>GOrDe$y)CG|Ts~+q8v^=%W`kF`G!2gk z6`<kb;>j>6Gm->(l9ddT?`vdlQ3X`Eq#8hA=XtyGB8 z=|3XI1HK*y`;+9kbr-@6UBflqIW-$=(;&KPuL1rvZxt*FY}1Hs6#{7*Oi+{p z%bvm6C!kx;3SowxJ7~k4}Y*&8-I@nnth-$yHOd`jjG0c ze%J>uO|Y+@;+bdijCQwKjNd12UI>Vpg-KA4^O9m|&=lBphur&YXtB27dY=${G~D)Y z;a;fKXHqZzxn_^n=YK>DD=^*++xRM0?E(|OklrG;m>!LL!9XHygGk-6AVW8_?wqBZ zZY1P4fg6~3l2D~n9GMjEdw`JNheX02C;roD334N;eRmMT%Rr#kM(sCIQ+{<8V>|r< zXRs~fYio1Wdn*<`x&j5Yp=tpF@q40o(Y^N6>^dOXw{ z*FY|%?`t{5-FH^L5#B%B-4~E2yZgS8Xa2=zeLig*B#Jx1hu8$!Z2e7favWcNZ|g88 zHDHMkzat;}-xn!VAP^Wc3BvggZlP@db0j}$_#spieeh4MesjtJ_m`6UV=34k);$SW zHJsRZ1U>Hb200BOW77fGW$x40$eHfbx5~GI;`E)sq9F5->m8*N&fR@VdJyPKel9g(sS~z{iQpHc z9vYQ&|BUf4tUUOm4(fTS);(j%3&2op?lVi3zginhsT-Y{Y;9bG2M?@G*?+PVO)!Cb z(}@(LPV$db{(h~TJPyO-O6#6?LFrwCNd97t6niVwZ5wG$k{LNw^u726=z4OiJEVoQxH6I9g1V(dWo#?MG^2yLBgWnohW$Ag|;;YV(gG{kl7( z#zWRdM48}rVZ-UA*2Y^WzCIV^RlT$;K;&cI}^vBmXwEYxENra4(f^G!>V$H@iOJr0tv z`*B$9%ab9QakKT;GTq$q(FW2n} zRiEUYG^^=v^5ofPl&`Ig^S~VnS|4y7Lu>ltEIzHen{d()2gipZY7v+L#JL zh#4=G^m+H&y#Ar}{Y2E){{}U@wm-B`d4=qEQp1f?V7p1yo$%c^p#4x}lJ|b8)n~?f zH%xV`b*G81dlUTP++KB3e2u0p+N0B`q=!xQQ@Zelyeu0}WEbWZGY@0+Byw{>TU zq_j1hzQ&ax`fD57Z#2^KS1B!6Oa8NGU2+n9H~NV`PSm&I!2pwAR!%8jC|y3R@L!mB?Ww7QX-+1_I1&X#db|AyLGmjd!`xI2#upz*#ja>Lw{GT=} zZ%=%``*tu@?W^I`6l)_5+}1sDMUC3f>dKR#5+9mWZHBb?drR5CCB44BY)&E#< zyxLPDxnD8Rdc-S4v4^u7cCxFxkDhkg4KT+$p`j#Lr$4sY-3FtS$6I$A0ly%1gX`~T z@!{5;84_~*AJU(Xz4u7nDJXf@Qq-k;JNTp=>3#;cUAGe8XY_O@Jw1je?@}X5G5Vhr zZf@ZMr5&ywk&0(doN8}b8EUay5})IleLav9aR?Zi;H$3SW4aupeBt{OGAL{- zLUF<=^Y%y1V&wSWR`oB|x0E(_PnA;A+3=}J$=hdbS^$TyIJXgf+bE2(g_64^L0#T@ z2upi>EjkXSXrZY+)#@P7=>EOoxMT4htB_sl5}5CaQ`Bx)^|Cho%>Z*<--*@6)4mVE zh=#{^FrENgIoqShVugQy48v)jWqe#RQ`xSn<+8WSNsDeujZ zWEx6`wQ(18f=w{WlzG)aLKxR45`Bxuj+HxFDZmmFb^@N&{UfchWLr6#b};5_P=-9r z{h%em^`ZB!I8R1;ae{XBFpmZ>GVjw(^rFsFis+wDia@`=B{O z(>l&^2dd0lo-E*FiLV{MiqH$wRo@RN6bo8QG3TT7QlN&xZ6v%cLY&4!n-&D*an_v) zG;sQ@JITOkjM4Jo%;S=MkD#{DN4xT#wQ(*Ly!4>^jKR9O#k#Wv`y^MiVTnswdT?8s zwMmA>dY0~@vHv%~9M957yE~K)f0EAviJDpvlFu_ecqPJ^WaTyLG66_S{nGWm?*d*B z$Jp?`@)jbn_dFoB??60CvuEGeT&32=u~ZDUJ8CT*X($GB5Bh^u5bL8|)MqkG-Cv=N z(bDkUw5{!NZo|5owt!aAtTmx!B-MHvmuWX*lzMd|$(v^{x_ZhPhq_Il8grk0E)jJE?l^R*V9h z<^){5*hwUxFYo`whwW8Fqg#vr}B1@GOw2;nqpk#^>Se;gS3oVrXu10?Ny8 z530oDZ0Sw}4piTrMc%8=-$cFtQ)=(^=-GOE--Q~nF}{tL+KJn1b`(US*9CQnqdz{<5*CP*wo5TXF;HUHn-*o^zi8I7v z4_siH2}^BM&~pSgBFOj$+@#ub$VXxu3%Ng}T<5m#oro}~KLJ{@!&A}%p6I^hf6#?} zd4!eMg05-ZnHd)gM|~B>i7S=;a46`;3VKxD)=hE4y3-&a%7A&YZVDaY;gH`w5nw0+ z1J6wumH6o2VW?q*V}QTUdovDC2kUEK+s^eDvaE~dxz`Z1B0I-0~6uT$K-TLemGqi z*dAEN351fUCy2%!BQA!RfZ+0&SQuzFk@8cuB_PCNfOD&%Dd?oZ`2MwI^^&4;b z9HYKG677_Migyg7B<#SGm!O=6Hl~0vR(+LL`9io{Wj_ysJF-wCEY$9${_p-QK|ZFS z2F_y?-F$*@Mc34S{sXnkJIec|NjdGe^8J~hx-JPd-9HTR{#=LU%m{L;E|JUYTe=y@$q19$5kY?C(GnnfRPtFWZrQ! zhhz_4uyW7Q5+OO*%&T%REWy}>3pbT0;&&J*z>#0f8u!`4WbJ|l9`%x&@r z>SdQgZl#SD)XqYq8qNm@T|F)fUyHU|8fG!qy+EOOmaj^FBTy;nYXsC=D`CQB+EUev zMgh}pfNkXotWOeeBA|?g$e{2+D`yR*(Hj4WyXShMpaE0qr75f8d`~MAz8Vx%9Pjg` zM70+iucOqM#rHQpjKU`Xle^Z`WR7_QFjEfT!~~prg%UT{`h1MC{#b=#|7i8)74AO7 ze&e7MJYk(+6o1-axDf#(9<9&YKdPWU`5}r$3u5>74gY1jzpikfUZU)mM_HdQG;;^tVM=d>5)YOshboi=O*dFvC3Pa3`TBVLD#1CbZBcTJw0;qyUQfv} z(IV|c04RA-Uk3=f_kz^pe6Rar^lQC--mGtC+mBh@v^ax6@f)R`SHs7v@e$UPPE{y{ zsNIDeoJe466K#~J@wK}ZnGz|Ps@{jHEBhz*x%C@IEapAJ6Ne~YBvoFGb-D0x|bl6x5-U&4b~=FkF9WTFfnV>Q9Op4@pcO1QQlFC z*j*OCr(*U(P|%nGW9S}5h0HZ6Q0Mb=O=Nw1KNg2{P-yoQsNLH1U-b9+ypJl}r>4py z@E6+rkp`Qc4Q>ig6`Dv}*2V{r;yQ1<7f(uW_uaVBx})}^b;pf8#nd3h$qAytO}=j+ zApvFhNZOlVaOT7FlbiXY(iJT<6CHU#M_ysRE!yt>!>F)IU#wG zyDwpNQb&dbySZ%RK4Q;zoe&98JAdxTheS(C0 zmO*~WcLYxz468TH{~O;MJds3+ExuNsKwqRS#DVK`m8cK=S-b3rt~zVRgp01)@40pK zZ6TTaM#+bKR|h2vsk2HLTrXOH^O=)STTf$h8gArE+_=M=;yeHz;Hda1W9l^It!Nl& zM|{!%IHF)V&tq}7n7rQ)eDlpWC*Qi_)r}uD;3s#V+}qHAKG`^e=-y&)xx0)L`><$f zx}*VqCZhpv=9U+hKx^=LF=$c$G#dYgVD@X^2bsNi4W-UhC`mE2<6!bW#AP^iMdx@f z!sovv30%WkeF^S147#k2s5 zFhu%%Md(aqj}IpRNv_{Tw~mLC@Rxq%p{OQVrj7eZnQBL_Xm0%+N8$|Kbm)P{<7%1$ zES~ncQ9#Ox4#w?guTRFkgTF-K|ATLZn#Zl~7l4)_AV4}xOa$+)F4)HO~HsEmJKFghLzBpbE##o%#_xI@j6#T}5pAGzy zRbnV=HL$T?2?kbjAU^|7T1v-$yRQw;9gG<5LLCGC?r{4G;WtL-ca_G^mEe0Q$bd8S zx~UZ)@ka=~Na4H&^2Z&#a-?OBrme4GYmj<8BpcyrpgOzv#kKipoibFY&x88n`~(g#!bRHfp1P;7lZ5mA z9)Eme@>V2(xm(_c%daqLNE7g0sdS9mAm#Fte>b+RK z7pnJc^`5ETXQ}sT>V1NGPgd{a)caWVo}k{(N<#iV^?qEv_p0|E_3l&e$JF~#_5PlE z?^5rF)qAIUKd9dKtM`5Cy+yt6R`0viyG51D#P5hF-8~bOJREoCtC`EX(9sU;wa}4$ zo`(g*vjE@?6_FOW$8jR@YZ&ECc8m1~ID9LceHEajDVKVjo1cRi0hnM0UNCK($wEPK zBRob=kx7x1+fB{xeaUw&C5b}h5$6_#Y~nej z4o|+*uMT6WSR6s#iVd)V>yjQ`mmh;eNL>sh@GXD^>mp)s%mmch9Dr-ZK8}m;uA??I zL-9?Z+O)wlT#YdR=RS{OdxuUjjK!Lex(WX^X`zqUfB6x4IB_rwm5sEn+u!b2*TLIs z75ZvOd+h`z)K5o`QT#HbsCMVH)5(b#>c;Brgdvjo@*y@lw?P@Jx6UB;652+g&&1MG zLTk=^(cnF33=ld-D%zR1nVswmu>cOLYH;G=vE!_GSb4fV5ZeSGC<(l!gL)hse%6CA z0Egy4A{YxDn8;!_qHL;t9OQ7(Gs8kOPPFYa-MLgRbJwqa^{Wx;=~$9)S4m09n9wx* z<*nN3S>6RAt5^Se4v_X}XLtwFODMjoPfU(cl{yF%A|LSj^BFP?U0I-wy;!{^@4)pu zi+6})o&+x%4qIETzMs&_1)bGDjt1j6svKBRY4w$HG4y^-aty>*t(%_rm|muCC(ob{ z>vp2Up9_NvKOxSv2$y%!1kkDe1wLwqs075L1$lB&$M8%6kMizByrN=3ow>`4Rr`Jk zwq^v9BZQ!cp6Q(z?%=$3zNY@rcrqcWi@y>>Y$pTjCj0R2@kB~lzRh`ej}9U z-Zw+Iz;IpR1Rw-L+fCf7bhh>xDqH>wmZCa1L5sx0C1t z*R}GHR#y)psmj?v&;9HAcyhnGE(TUeT^|=ot*(zCIZ$0Sn?haf$Du}ViE3IS5MXfA z>ZJ;W^z*ZHGBQjrKnSx>2ph)gj}$tQm2y@BSJ&OIQ4s0wF$__f?!v~*IJ7DicpOH} zt^Q+7qrflNFEsm2OVa7JdKKc;E44;D&^TIW39k>1R#HC;ucxISe?6_+{((Lk9yB@~ z{_-I3CM-k_gnwTcT-6PYki5P|T3_!msY9#KpI+8i=cVmH?%=d9gwg6ee?18Nu`u`q z3^3@hYVSa!yVoCQ@;I~$1Ey$r?~EF_lNR-08A(mBMT|yx8BK4mZ^^6ie7tDv zyU89WUxYgqT!6!bbT9f248U%Q^M9bVLGx0r?MUZ%O@qlvWN6U5I&fZ&;n9zy#P|j6 zLD$ozm^T4m>}t_N8jatm8=ffQLO2xem*I6Jnrj7ZCRi?nMY(*FIHdSx;D>e(j~53R zcfhw4-aec!aZIzQT_?JCy1KtK^gn$=8q7rzizng z(iX{aO@mu(q!0@osfLBLm^8Se!3o*j64dy;fa|dZ=O>ym4H>*LLf(-y1LkAj`P8qC zoq`WC7K)ZE*78&8kR^)`P2l#uv*g`U&qe*jH*+i+VOxXt6Rni1CK{bgSP3qs9> zE~pVjOL7I{&G`~b>qiEO9HvreQJqGpzYDWHio!lX%TxdOfcgoi<0@JwiUB`j#X%Pd zkYEa)!8r#vU5@goN=4SJ`mYLsGze&gb~aW1tI zkEhR}fsaa{ zZ#zE8pwluI-;4-kw+ZIDF1hUA#YVKwkL&h^b7a5h9JvOw0j*#2!Rf*M=o7s2QI8I` zGtr{e)xJgwqu7ea*A)Ar*Pem|SRt6|Mb-Wt0*X$Cj74<#Q9W@+@FaC;B|WG63js#2N+AyKcZU~;XQ{qoUavx+ZP|^!{YsmL*qEr&f!8r zaZ)0{`DGZ+U^*1=bLXV9)VUJHqKNhpI-&}rs4~#;F`9}V502+y?eO<@fpc8oX#GvY z(R|u}jt-AOMR~kIo}zQWycF&bx6s)Y_yN05De2)6w$HtnkAmJ3pKz;mI)po{Uc6dP zVukrCILz0vwja{>gFZ4GE@b2~Y=aD9R6tGng3wQckV1+iwe_A5nsq@8qS3~bfpKfq zIv)3oB0cdEmW03tD`Qp&jz*UX7>+ifMK)<n!Y7O2pmGy@+l{1_&0WP|t^1Gfkd zf>&-4J@oMfvQOS-$Ed%mQ$87l*gFmVc0&&h>BrEagOSqnm=|=|kBd=&CbaK@F%5{v z=nE0t=y8g{lh=bFFG%z@orT5l1}8x5T7Az9KorD22$_hJ7;0`UfT2*~JfzTfQyQJe4gbmKnm^*7XTB)A@{`VmC0 z!Fi+w`{vyE;HA0EaGa83L4?n6%2Y$p#$sWM$9cn06f=9TjB0A>JWFU3eSpD>^3qIv z;f%EBA58$w`8+H_-_Y1@Y|tlsf-yk%6>7Oq=gTxU@VH+M6hn(VM(3h=Y_>-u5AA~# zw7o!fLIV_hDPHY3cdjxPE>ZMRt#|M^4e`}0>1;F^n&_;z3u_3@Ir!c{ zs*-n@+$O%C@;OAt_c1=x=9ORjP&z`L9CTA^jKkg%k;gyuGFMcX@LPSu=l~PW9Jc!2 zL(ql|2K!;GMuYZ4^kDiHgvIwA;zGv`$?wWyF})2VIth4~DmIBexkAidK=TOQJ@P7^ z;K+$Fom~{rdjZupAjrK?{|cQyB?uR#&Y6BDqDWGsSj7)^ekY%~TJ+fzmz_6SJc{76 zDZCx5%>jab;V0lYkYD(ahMK|rf(dOwEz#;*t&t1Apv7a_bhDF(EtE%Fn$r+{y+q>@ zO>!#wDaSwUc28@k|5e!5#Ey&e2iEJb5DUlH-;bZ zSJxdj*-theX;$YEALHOMktGR6JN&8}=>;b^a2!cL8Roh8pg=wCqupc&=*vmit)^lN zlf3v$k~Uu7z`HLjxyK)i(um?|MC;-!ReKYHy4G~ke}1U@U^-JoQ34MSz$OJs)#n&G z-aqLm&R$^Bx-lAnFLI++z7{l=>h?uDEW!&29{WBt&`3Iy26N$wW~_C>tCIV$Hd1&= zjfevI`vz$2ePmALJb0&=gD!*d5Xyz$;&{^pGyfhnT}=F-+I?Y0IwDAS0pU@U!>L#E z(vSNaI22J%FQVTt49<^)<-_z|jt@LlEbLtQL_z9+{T!A=u(ht(J412QL0$C|i5kvf ze7r{e2$#3yu&{+xEh^cM!`=QYe55JZx{G;F!|)F0tOjUV8VDbWI!c0gaU_hJ;c?BA z<3l*_36mG?ptfDGm#*Q`koOCM#)_boH=iCiaMPp~R$cjBFQPk=W+0AQv;Pq5Cz^$l zslq}vKI-_&yIZ^cW3)7lUAK}2*?ZdUA4y((X-kWI_KTXe+dm{QEP^J5M?T>l1u;Zt<2ZNOm&0h2n)+Qw8vK&_#Q6Y*7D`8}>i$^g z`5bua@L9p_vgfdi!VQB@7EY4$W6sn^~T%Pna0D^zVHGt zF+S=DFOYhSdjbCaIT;<=qF@$?zi=DRaD%Y;Ur^JD+`26OUn1tE@rk!j0!C9c?4{3B zh<*_)8-oC6HG){_f~!uyT3t6;E-_@b~KEJ za&_JD$8dz&ipY-vS9jONe4ECtLU>cJ{heT!{aTo&@O-?IE5L%srU&u<7yo38Tn&HY zDcL8K@FnIX$VW%SK*B}NBUg%8q7$A6-pk9s?-GZRjbeUv?fn(LT!pnAOd{ZOJ`VFa zyD$&pjY>Ype?zSdD6%Xp7^j}IL~1kPmE^A{8x9_dm$BG4urqwV`K0`mWdi7Spp4P{l=f5G3APw ziMmqA+!l@^WFK`xe;hq-QK*BVbE^jUsOT)h-ziwF=JT-25?+^Io;TT=ko^-v=R1Ba!2q{boy@mogxNEs7Fa2#si*ar)V z`&3UsTS_#QIVno6<>op7-fzS4vcvJf43ko9Y=)Kxh+baMCugYz&*2Pd?B`X+o{Vth z+<*NNDL(FCv``yo1g4w9(<^q1e}@{7qC8%9oK`kpGk^cR;F>v4zoDnc2InTvpy_nm z(Cuk9m95*;Et+6tG2}Bf8o2Hx)mwdvT@mt8nq%Wf#lFU{0VgpMrz=6};j3~c9!6;E zy9t;>U}3}FM{Mk8-RsXXc@$Nrq)$n3uR1GXbfTVRvQYkmM_}muphH;R1mVhP4+iEFx>o*uxB$KF2FLqD2p)}PR3j4PG16hX zsvVgUTsz2FK?xd%R2N=P>ZR9dxV)h}ZV%;=8Oq~^emoY2@xVEbLF@Gb;+#n8B}Itm zjSx=>!y9;iA|18RWg8gB9sy2H1UPwNI1}LUg8l4a9u@JxMzhnf{2%wv59tTL0o!0p zZ=nSGQ4-7xF&(!u-s+fAUW7b48%#$b)YwVuOWzIUvHm|>4x%zti-GdGBBkTL{pScpgZe;Q@iU%Z;pi(FB8|%3c*Y6O z&FTqHZf~e-&{o!620X56vYd5z@zugt%;T^YK6~%_u<4~{ujkaK0rkNoMr#-Cj1M?- zzqYjdou5NY@dIk$n~T%fvf4EGYx;f@eR-Ac(iLfDyqQ#M{+*e9CYcYL+3N;#rJx`^=B-MHT%eIVVy*jYo?UL$)$M?+yFt~KN3IgeDzi?-ZgPG`j- z#gRBv<``*YiFt{%#=MSgl7hu>_{HXhQq_pn>>(Yl$?$FOG;*Tr23Q(4w$UzHn|xb7 z|HA)&PXkqz%U6_@IqDtdYohQO%$mVTqwX;mFsk`w;N1nsEs*>p`NMm`G)hpK6@Q)kGm8+b#iqgs|SDo|55zJ;=P+2FtN~>;nIqUA@ z8P0NBMNOS;e7SA;eX_IORw~;{%ggJW_4T&#wZzwEE2+Mxx@Jwat+w9jDzCBCIjd^Q zO6AHLKRouoYD`%hAHqCa)r~ubWP# z((AhTXKcnZHa8>VM%#qB`6Ux=GpAfPWg5W;hoR`Y-KIW28}j@UtSf2of5SNsdhP`N$05%nanOh0^yBNJxJ&oX zXVN;0bV;1av`G^GP7}^Kv7=*_XYx=;m*?IElq|w zBh8s^Bk?Q7m0gEdL?|yKKJ9^c6Yt|yNY(<5t#8hc`h5egb^TzQ0ow!^^;h~4-Zor~ zA+W*Zo&Y?OdnIr`#62jR{b8fqWY{~RExkSc6;v`amg8juWfJCLyeDY&xSJ3L*A4OK z7vfg(N5L{OBcpro4Yh7sd2=G8lYbuw(5s-q^5#cIx9Iig<9#|3zc(K zWOD9C{RW~VUDHpxzc80uX$%{8Ng89CttKOnuFbH=Z!oZ!HX(@7bUW8=G=6D#rHz^# zIJvm)#-w~11_slwftML4vAGFmgNtQZjjq~Z2{8uOx`bf{*V+W5!6h5#8e4&pPG-}Q z{z?WJ#$dLm*~Q&!0)bH|Cn!U{s6XYW;#z|If$WX)m*66LdJfVr(&-62m>z7%BR$M` zPS}a*Pa%4U&{mG^8Q8|SJQ0+={gpsqI`B;Igp^$!S^K|tAUby+lKYcD zU;^$zI@p1ujgQ$D5cUnZ4D*IJZGu|}}WTtPRK{Z0Z2)$#D}u-t^Z z=^r6>m-UG8VUyczcu^feFn|ozZ{OP&oj;p^@~=htLHV7L$!`M*$v*-9iQ)@W%)Mzr z9_qL;lnyi=XR!>*`(A7a54G<_%3~Mm!R4@q@Q85y+6Q~P3v~#}ZxDm$P&z+|6~<`j zwhb~~4pm+n`foI`-1e6Pfjh$LCmhsJ<&}dDACc7cB8HwJ`;w_GI$PX_Bfim$$xlZ~ zXTh%7%+UJPp1;qNz4Jc*Ja*AT>BKzYeQlaBlwNy&5eU$HC}?jH+UbrT1p>5F7NpBQ zzq}+XU7Mn$JBo2;AbT6CPm-SKYQ&C40q&;JA$^j@X8X4ro1X?BJMp@pOAx92s3R>KBci zRgiOHXnE@RJCr_s=+oDP(p5wz=XRW2j3y?l+8v#5PDOl_5h~~U$mFbrT}RU&ng^j9 z%4gXiBl)bApr41k={upmW-b?cs5UWyHX0j9fNrCSJ!QnK(dcN>OVPFEvp*f!R)^B9 zHXb~Ix!yhrx}6ZBTZ{+B7bQL*45i343G6hePvZiK z9M@2G*7AdXbJz%Do$ZKY!~9R7@a;qOE1IK|Pgo0o@D=VRIiz2SSlSn9ES=fk->WhV zRc9KnZ$a5XU9F95TuMSbk`+p4NQ-D}coyZ+hmL~ft%$6=D)h-{#_O&>L^r0)ic+5w zz8BqERxaXRoOjUma&KgM+4eL(tr%wO8zQoG`QM_O(@ug9$MFqa&U+%0GY)YY?+@A< zpSmtTlznzV&aifmFn%qMl5U?8U3}hx^&e~n>v}1TOfUQ4!?Q!_3}QoTD7~bCt}u*F zIIE%PdZ3puUtANJoM*lLd|ZTc_5CO>n*Q#?K1?*RAcJ1MP5o@pA=zcpBRK38s!zmY z)e)|l?nc{x8(Fn7H+?q{_<6rF4L=fv4%LoH&?~K-2L0#|^B%3tgBTmrL+Mb@wGq~{ z{D=M4_ZJA;8ETvhuJJYo0_7;%^iaq+r>*gp486vy)uDV-^m=Q7fBrUlqq@GvcqGEUx(x9>olOYZlpI<6YV(>ITSeb9JsQ%! zu&eGO$Nq%-366y_;3#+ZH(!Y9IUCi_358`qLS_ifr&vx`lL-ALx3&W6~d(db&x z7q~vO@i4-+m74>BD?`h>D>DCGg%~xO`q|(Yqv`(b<4YcCrs^9AAghp z(Q39LMtVS6DF?!7dFE}FP#2I!*E=TZ3V zfzCDz<#(6C&cf&-Tu*9A*8R9uikZxJKKEJ{3*8W`mBRiJvy1t~Z9Zi5iO!W^*>+ zl6<*{;lt<|U5bHz}3v{8c3{>7wwnX)%Ycp)o zi@Rw@h%M3FxG}PI)Lr-X>*Eo|XcI8^h^D?tpc`lpekl8Ez<%4eu?Nl9c4EIRY`-SL zz1Op#8wI@v?MQ6Z4{1L~LHBKZm<>gctevpiu(9M@#4X#fR~OBEt{3y2Z?kT%>GW9b zz&1Nn8=n1^eOlAaL9Dxn?a@LvtHsjKknORks-Iqm7^Af^mw+zpyb{Wcbe|x%Cb~Yg z2;)%>Y$0fKI3O9xJ44f;pKmjd)O_WB&_&}bH6888p5|4d@S4C$-YpbK9 zOUBuTX#B@4(0!Z!to4!YQP%G%j0fMw22!DaDs#r1K;UP1FD+<0>b{b3vcz9o#QSG3 zrMa=j1EJ~k*una&W+UtDfk2D|zDwgRZi68^&K%cdmFUgggrOyBI z;}e$PT}~TdGjNpyuAQH78}NeY-6P^H>0p>1%iq~t1e|8z5D)qdCMV_7)d*bPU%{#b zubO7ZE<};%Ww}bCpUgvPQ0x!ejHVl|ILVxLv4A%jQSweHv#256i#c8x8*{r z3>7sewmyDbHfqRu*pZ_#f!g@{flm=H@c9pw57%uWbPE=yoLC{q3L%0DofmrtPqPW2 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 Ym7scfT-^4*9o~YOdN}ZUj)wjJ0Vjy{rvLx| diff --git a/ShortestPathAlgos/Test_Cases.md b/ShortestPathAlgos/Test_Cases.md new file mode 100644 index 0000000..9a99313 --- /dev/null +++ b/ShortestPathAlgos/Test_Cases.md @@ -0,0 +1,81 @@ +Dijkstra's algorithm Test Cases: + +Test Case 1: +```plaintext +V = 4 +adj = {{{1, 1}, {2, 4}, {3, 3}}, {{0, 1}, {2, 2}, {3, 5}}, {{0, 4}, {1, 2}, {3, 6}}, {{0, 3}, {1, 5}, {2, 6}}} +S = 0 +Output: 0 1 3 3 +``` + +Test Case 2: +```plaintext +V = 3 +adj = {{{1, 2}, {2, 3}}, {{0, 2}, {2, 5}}, {{0, 3}, {1, 5}}} +S = 1 +Output: 2 0 5 +``` + +Test Case 3: +```plaintext +V = 5 +adj = {{{1, 4}, {3, 1}}, {{0, 4}, {2, 2}, {3, 5}, {4, 3}}, {{1, 2}, {4, 1}}, {{0, 1}, {1, 5}, {4, 6}}, {{1, 3}, {2, 1}, {3, 6}}} +S = 0 +Output: 0 4 6 1 7 +``` + +Test Case 4: +```plaintext +V = 4 +adj = {{{1, 10}}, {{0, 10}, {2, 5}, {3, 1}}, {{1, 5}, {3, 2}}, {{1, 1}, {2, 2}}} +S = 0 +Output: 0 8 7 3 +``` + +Test Case 5: +```plaintext +V = 3 +adj = {{{1, 7}, {2, 9}}, {{0, 7}, {2, 10}}, {{0, 9}, {1, 10}}} +S = 1 +Output: 7 0 10 +``` + +Test Case 6: +```plaintext +V = 6 +adj = {{{1, 2}, {2, 5}}, {{0, 2}, {2, 6}, {3, 7}}, {{0, 5}, {1, 6}, {3, 3}, {4, 8}}, {{1, 7}, {2, 3}, {4, 1}, {5, 4}}, {{2, 8}, {3, 1}, {5, 9}}, {{3, 4}, {4, 9}}} +S = 0 +Output: 0 2 5 10 11 20 +``` + +Test Case 7: +```plaintext +V = 2 +adj = {{{1, 3}}, {{0, 3}}} +S = 1 +Output: 3 0 +``` + +Test Case 8: +```plaintext +V = 1 +adj = {} +S = 0 +Output: 0 +``` + +Test Case 9: +```plaintext +V = 4 +adj = {{{1, 5}}, {{0, 5}, {2, 2}}, {{1, 2}, {3, 1}}, {{2, 1}}} +S = 0 +Output: 0 5 7 8 +``` + +Test Case 10: +```plaintext +V = 5 +adj = {{{1, 3}, {2, 6}}, {{0, 3}, {3, 2}}, {{0, 6}, {4, 7}}, {{1, 2}, {4, 5}}, {{2, 7}, {3, 5}}} +S = 2 +Output: 6 3 0 2 7 +``` \ No newline at end of file From 3f0ecb96a004b06fec8ac55a10b8e33457d7957a Mon Sep 17 00:00:00 2001 From: mayurishinde27 Date: Sat, 7 Oct 2023 15:41:15 +0530 Subject: [PATCH 3/3] Update Dijkstra_Algo.cpp --- ShortestPathAlgos/Dijkstra_Algo.cpp | 83 +++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 10 deletions(-) diff --git a/ShortestPathAlgos/Dijkstra_Algo.cpp b/ShortestPathAlgos/Dijkstra_Algo.cpp index b22c0ce..64a7bd4 100644 --- a/ShortestPathAlgos/Dijkstra_Algo.cpp +++ b/ShortestPathAlgos/Dijkstra_Algo.cpp @@ -1,53 +1,116 @@ // GFG: https://practice.geeksforgeeks.org/problems/implementing-dijkstra-set-1-adjacency-matrix/1?utm_source=gfg&utm_medium=article&utm_campaign=bottom_sticky_on_article -/*Given a weighted, undirected and connected graph of V vertices and - an adjacency list adj where adj[i] is a list of lists containing two integers - where the first integer of each list j denotes there is edge between i and j , - second integers corresponds to the weight of that edge . - You are given the source vertex S and You to Find the shortest distance of all the vertex's from the source vertex S. -You have to return a list of integers denoting shortest distance between each node and Source vertex S. +/*Algorithm : Dijkstra's algorithm is a graph traversal and shortest path-finding algorithm. It finds the shortest path between a starting node and all other nodes in a weighted graph, where each edge has a non-negative weight. + + Logic: he algorithm maintains a set of visited nodes and uses a priority queue to explore nodes in order of their current distance from the start node. It iteratively selects the node with the smallest distance, updates the distances to its neighbors if a shorter path is found, and continues until all nodes have been visited or the destination node is reached. + */ #include using namespace std; +// Function to implement Dijkstra Algorithm vector dijkstra(int V, vector> adj[], int S) { - set> st; - st.insert({0,S}); + set> st; // set to store the distance and node pair + st.insert({0,S}); // insert the source node with distance 0 - vector dist(V, 1e9); + vector dist(V, 1e9); // vector to store the distance of each node from source - dist[S] = 0; + dist[S] = 0; // distance of source node from itself is 0 while(!st.empty()) { + // find the node with minimum distance auto it = *(st.begin()); int dis = it.first; int node = it.second; st.erase(it); + + // traverse the adjacency list of the node for(auto x: adj[node]) { int adjNode = x[0]; int adjWt = x[1]; + // if the distance of adjacent node is greater than the distance of current node + weight of edge between them if(dis + adjWt < dist[adjNode]) { + // if the adjacent node is already visited then erase it from the set if(dist[adjNode] != 1e9) { st.erase({dist[adjNode],adjNode}); } + // update the distance of adjacent node dist[adjNode] = dis + adjWt; st.insert({dist[adjNode],adjNode}); } } } + // return the distance vector return dist; } +int main() +{ + // Test case 1 (same as before) + int V1 = 5; // Number of vertices for Test case 1 + int E1 = 7; // Number of edges for Test case 1 + int S1 = 0; // Source node for Test case 1 + + // Define the adjacency list for Test case 1 + vector> adj1[V1]; + + // Add edges to the adjacency list for Test case 1 + adj1[0].push_back({1, 2}); + adj1[0].push_back({2, 4}); + adj1[1].push_back({2, 1}); + adj1[1].push_back({3, 7}); + adj1[2].push_back({3, 3}); + adj1[2].push_back({4, 5}); + adj1[3].push_back({4, 2}); + + // Call the dijkstra function for Test case 1 + vector res1 = dijkstra(V1, adj1, S1); + + // Print the result for Test case 1 + cout << "Test case 1 result: "; + for (int i = 0; i < V1; i++) + cout << res1[i] << " "; + cout << endl; + + // Test case 2 + int V2 = 3; // Number of vertices for Test case 2 + int E2 = 3; // Number of edges for Test case 2 + int S2 = 1; // Source node for Test case 2 + + // Define the adjacency list for Test case 2 + vector> adj2[V2]; + + // Add edges to the adjacency list for Test case 2 + adj2[0].push_back({1, 2}); + adj2[1].push_back({2, 3}); + adj2[2].push_back({0, 1}); + + // Call the dijkstra function for Test case 2 + vector res2 = dijkstra(V2, adj2, S2); + + // Print the result for Test case 2 + cout << "Test case 2 result: "; + for (int i = 0; i < V2; i++) + cout << res2[i] << " "; + cout << endl; + + return 0; +} + + + +// Time and Space Complexity for Best Average and Worst cases: // Time Complexity: O(ElogV) +// Time Complexity: O(V)