#include<bits/stdc++.h>
#define V 9
using namespace std;
bool Left[V];
int Distances[V];
int find()
{
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;
for(i=0;i<V;i++)
Distances[i]=INT_MAX;
Distances[start]=0;
while(start!=-1)
{
Left[start]=true;
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();
}
}
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;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBWIDkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKYm9vbCBMZWZ0W1ZdOwppbnQgRGlzdGFuY2VzW1ZdOwppbnQgZmluZCgpCnsKICAgIGludCBsb3c9SU5UX01BWCxpZHg9LTEsaTsKICAgIGZvcihpPTA7aTxWO2krKykKICAgICAgICBpZiggIShMZWZ0W2ldKSAmJiBsb3c+PURpc3RhbmNlc1tpXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWR4PWk7CiAgICAgICAgICAgICAgICBsb3c9RGlzdGFuY2VzW2ldOwogICAgICAgICAgICB9CiAgICByZXR1cm4gaWR4Owp9CnZvaWQgZGppa3N0cmEoaW50IHN0YXJ0LGludCBncmFwaFtWXVtWXSkKewogICAgaW50IGk7CiAgICBmb3IoaT0wO2k8VjtpKyspCiAgICAgICAgRGlzdGFuY2VzW2ldPUlOVF9NQVg7CiAgICBEaXN0YW5jZXNbc3RhcnRdPTA7CiAgICB3aGlsZShzdGFydCE9LTEpCiAgICB7CiAgICAgICAgTGVmdFtzdGFydF09dHJ1ZTsKICAgICAgICBmb3IoaT0wO2k8VjtpKyspCiAgICAgICAgICAgIGlmKGdyYXBoW3N0YXJ0XVtpXSAmJiBEaXN0YW5jZXNbc3RhcnRdK2dyYXBoW3N0YXJ0XVtpXTxEaXN0YW5jZXNbaV0gICkKICAgICAgICAgICAgICAgIERpc3RhbmNlc1tpXT1ncmFwaFtzdGFydF1baV0rRGlzdGFuY2VzW3N0YXJ0XTsKICAgICAgICBzdGFydD1maW5kKCk7CiAgICB9Cn0KaW50IG1haW4oKQp7CiAgICBpbnQgaTsKICAgLyogTGV0IHVzIGNyZWF0ZSB0aGUgZXhhbXBsZSBncmFwaCBkaXNjdXNzZWQgYWJvdmUgKi8KICAgaW50IGdyYXBoW1ZdW1ZdID0ge3swLCA0LCAwLCAwLCAwLCAwLCAwLCA4LCAwfSwKICAgICAgICAgICAgICAgICAgICAgIHs0LCAwLCA4LCAwLCAwLCAwLCAwLCAxMSwgMH0sCiAgICAgICAgICAgICAgICAgICAgICB7MCwgOCwgMCwgNywgMCwgNCwgMCwgMCwgMn0sCiAgICAgICAgICAgICAgICAgICAgICB7MCwgMCwgNywgMCwgOSwgMTQsIDAsIDAsIDB9LAogICAgICAgICAgICAgICAgICAgICAgezAsIDAsIDAsIDksIDAsIDEwLCAwLCAwLCAwfSwKICAgICAgICAgICAgICAgICAgICAgIHswLCAwLCA0LCAwLCAxMCwgMCwgMiwgMCwgMH0sCiAgICAgICAgICAgICAgICAgICAgICB7MCwgMCwgMCwgMTQsIDAsIDIsIDAsIDEsIDZ9LAogICAgICAgICAgICAgICAgICAgICAgezgsIDExLCAwLCAwLCAwLCAwLCAxLCAwLCA3fSwKICAgICAgICAgICAgICAgICAgICAgIHswLCAwLCAyLCAwLCAwLCAwLCA2LCA3LCAwfQogICAgICAgICAgICAgICAgICAgIH07CiAgICBkamlrc3RyYSgwLGdyYXBoKTsKICAgIGZvcihpPTA7aTxWO2krKykKICAgICAgICBwcmludGYoIiVkICIsRGlzdGFuY2VzW2ldKTsKCiAgICByZXR1cm4gMDsKfQo=