#include<bits/stdc++.h>
#define V 9
using namespace std;
bool Left[V];
int Distances[V];
int find(int start)
{
int low=INT_MAX,idx=-1,i;
for(i=0;i<V;i++)
if( !(Left[i]) && low>=Distances[i])
{
idx=i;
low=Distances[i];
}
return idx;
}
void djikstra(int start,int graph[V][V])
{
int i,j,k;
for(i=0;i<V;i++)
Distances[i]=INT_MAX;
Distances[start]=0;
Left[start]=true;
while(start!=-1)
{
for(i=0;i<V;i++)
if(graph[start][i] && Distances[start]+graph[start][i]<Distances[i] )
Distances[i]=graph[start][i]+Distances[start];
start=find(start);
Left[start]=true;
}
}
int main()
{
int i;
/* Let us create the example graph discussed above */
int graph[V][V] = {{0, 4, 0, 0, 0, 0, 0, 8, 0},
{4, 0, 8, 0, 0, 0, 0, 11, 0},
{0, 8, 0, 7, 0, 4, 0, 0, 2},
{0, 0, 7, 0, 9, 14, 0, 0, 0},
{0, 0, 0, 9, 0, 10, 0, 0, 0},
{0, 0, 4, 0, 10, 0, 2, 0, 0},
{0, 0, 0, 14, 0, 2, 0, 1, 6},
{8, 11, 0, 0, 0, 0, 1, 0, 7},
{0, 0, 2, 0, 0, 0, 6, 7, 0}
};
djikstra(0,graph);
for(i=0;i<V;i++)
printf("%d ",Distances[i]);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBWIDkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKYm9vbCBMZWZ0W1ZdOwppbnQgRGlzdGFuY2VzW1ZdOwppbnQgZmluZChpbnQgc3RhcnQpCnsKICAgIGludCBsb3c9SU5UX01BWCxpZHg9LTEsaTsKICAgIGZvcihpPTA7aTxWO2krKykKICAgICAgICBpZiggIShMZWZ0W2ldKSAmJiBsb3c+PURpc3RhbmNlc1tpXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWR4PWk7CiAgICAgICAgICAgICAgICBsb3c9RGlzdGFuY2VzW2ldOwogICAgICAgICAgICB9CiAgICByZXR1cm4gaWR4Owp9CnZvaWQgZGppa3N0cmEoaW50IHN0YXJ0LGludCBncmFwaFtWXVtWXSkKewogICAgaW50IGksaixrOwogICAgZm9yKGk9MDtpPFY7aSsrKQogICAgICAgIERpc3RhbmNlc1tpXT1JTlRfTUFYOwogICAgRGlzdGFuY2VzW3N0YXJ0XT0wOwogICAgTGVmdFtzdGFydF09dHJ1ZTsKICAgIHdoaWxlKHN0YXJ0IT0tMSkKICAgIHsKICAgICAgICBmb3IoaT0wO2k8VjtpKyspCiAgICAgICAgICAgIGlmKGdyYXBoW3N0YXJ0XVtpXSAmJiBEaXN0YW5jZXNbc3RhcnRdK2dyYXBoW3N0YXJ0XVtpXTxEaXN0YW5jZXNbaV0gICkKICAgICAgICAgICAgICAgIERpc3RhbmNlc1tpXT1ncmFwaFtzdGFydF1baV0rRGlzdGFuY2VzW3N0YXJ0XTsKICAgICAgICBzdGFydD1maW5kKHN0YXJ0KTsKICAgICAgICBMZWZ0W3N0YXJ0XT10cnVlOwogICAgfQp9CmludCBtYWluKCkKewogICAgaW50IGk7CiAgIC8qIExldCB1cyBjcmVhdGUgdGhlIGV4YW1wbGUgZ3JhcGggZGlzY3Vzc2VkIGFib3ZlICovCiAgIGludCBncmFwaFtWXVtWXSA9IHt7MCwgNCwgMCwgMCwgMCwgMCwgMCwgOCwgMH0sCiAgICAgICAgICAgICAgICAgICAgICB7NCwgMCwgOCwgMCwgMCwgMCwgMCwgMTEsIDB9LAogICAgICAgICAgICAgICAgICAgICAgezAsIDgsIDAsIDcsIDAsIDQsIDAsIDAsIDJ9LAogICAgICAgICAgICAgICAgICAgICAgezAsIDAsIDcsIDAsIDksIDE0LCAwLCAwLCAwfSwKICAgICAgICAgICAgICAgICAgICAgIHswLCAwLCAwLCA5LCAwLCAxMCwgMCwgMCwgMH0sCiAgICAgICAgICAgICAgICAgICAgICB7MCwgMCwgNCwgMCwgMTAsIDAsIDIsIDAsIDB9LAogICAgICAgICAgICAgICAgICAgICAgezAsIDAsIDAsIDE0LCAwLCAyLCAwLCAxLCA2fSwKICAgICAgICAgICAgICAgICAgICAgIHs4LCAxMSwgMCwgMCwgMCwgMCwgMSwgMCwgN30sCiAgICAgICAgICAgICAgICAgICAgICB7MCwgMCwgMiwgMCwgMCwgMCwgNiwgNywgMH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgZGppa3N0cmEoMCxncmFwaCk7CiAgICBmb3IoaT0wO2k8VjtpKyspCiAgICAgICAgcHJpbnRmKCIlZCAiLERpc3RhbmNlc1tpXSk7CgogICAgcmV0dXJuIDA7Cn0K