#include <iostream>
using namespace std;
#define infinity 999
int numN;
int cost[15][15];
int pred[15];
int d[15];
void init(int source){
for(int i=0; i<numN; i++)
d[i]=infinity, pred[i]=-1;
d[source]=0;
}
void RELAX(int u, int v){
if(d[v]>d[u]+cost[u][v])
d[v]= d[u]+cost[u][v], pred[v]=u;
}
(
void BELLMAN_FORD()
{
}
void print()
{
for(int i=0; i<numN; i++)
{ cout<<"\n";
for(int j=0; j<numN; j++)
cout<<cost[i][j]<<"\t";
}
}
int main() {
int source, val;
#if 0
cout<<"enter the number of nodes"<<endl;
cin>>numN;
cout<<"enter the cost matrix of the graph"<<endl;
for(int i=0; i<numN; i++)
for(int j=0; j<numN; j++)
{ cin<<val;
if(val==infinity)
cost[i][j]= 0;
else
cost[i][j]=val;
}
cout<<"enter the start vertex"<<endl;
cin>>source;
#else
source =0;
numN=5;
cost[0][0]=0;
cost[0][1]=6;
cost[0][2]=0;
cost[0][3]=7;
cost[0][4]=0;
cost[1][0]=0;
cost[1][1]=0;
cost[1][2]=5;
cost[1][3]=8;
cost[1][4]=-4;
cost[2][0]=0;
cost[2][1]=-2;
cost[2][2]=0;
cost[2][3]=0;
cost[2][4]=0;
cost[3][0]=0;
cost[3][1]=0;
cost[3][2]=-3;
cost[3][3]=0;
cost[3][4]=9;
cost[4][0]=2;
cost[4][1]=0;
cost[4][2]=7;
cost[4][3]=0;
cost[4][4]=0;
#endif
print();
init(source);
bellmanford();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGluZmluaXR5IDk5OQppbnQgbnVtTjsKaW50IGNvc3RbMTVdWzE1XTsKaW50IHByZWRbMTVdOwppbnQgZFsxNV07Cgp2b2lkIGluaXQoaW50IHNvdXJjZSl7Cglmb3IoaW50IGk9MDsgaTxudW1OOyBpKyspCiAgICAgZFtpXT1pbmZpbml0eSwgICAgcHJlZFtpXT0tMTsKICAgICAKICAgICBkW3NvdXJjZV09MDsKfQoKdm9pZCBSRUxBWChpbnQgdSwgaW50IHYpewoJaWYoZFt2XT5kW3VdK2Nvc3RbdV1bdl0pCgkgIGRbdl09IGRbdV0rY29zdFt1XVt2XSwgcHJlZFt2XT11Owp9CigKdm9pZCBCRUxMTUFOX0ZPUkQoKQp7Cgp9CnZvaWQgcHJpbnQoKQp7CiAJZm9yKGludCBpPTA7IGk8bnVtTjsgaSsrKQogCSB7IGNvdXQ8PCJcbiI7CiAJICBmb3IoaW50IGo9MDsgajxudW1OOyBqKyspCiAJICAgIGNvdXQ8PGNvc3RbaV1bal08PCJcdCI7CiAgICAgICAgIH0KfQoKaW50IG1haW4oKSB7CglpbnQgc291cmNlLCB2YWw7CgkjaWYgMAoJY291dDw8ImVudGVyIHRoZSBudW1iZXIgb2Ygbm9kZXMiPDxlbmRsOwoJY2luPj5udW1OOwoJY291dDw8ImVudGVyIHRoZSBjb3N0IG1hdHJpeCBvZiB0aGUgZ3JhcGgiPDxlbmRsOwoJZm9yKGludCBpPTA7IGk8bnVtTjsgaSsrKQoJICBmb3IoaW50IGo9MDsgajxudW1OOyBqKyspCgkgICB7IGNpbjw8dmFsOwoJICAgICBpZih2YWw9PWluZmluaXR5KQoJICAgICBjb3N0W2ldW2pdPSAwOwoJICAgICBlbHNlCgkgICAgIGNvc3RbaV1bal09dmFsOwoJICAgfSAgCgljb3V0PDwiZW50ZXIgdGhlIHN0YXJ0IHZlcnRleCI8PGVuZGw7CgljaW4+PnNvdXJjZTsKCSNlbHNlCglzb3VyY2UgPTA7CgludW1OPTU7Cgljb3N0WzBdWzBdPTA7Cgljb3N0WzBdWzFdPTY7Cgljb3N0WzBdWzJdPTA7Cgljb3N0WzBdWzNdPTc7Cgljb3N0WzBdWzRdPTA7CgkKCWNvc3RbMV1bMF09MDsKCWNvc3RbMV1bMV09MDsKCWNvc3RbMV1bMl09NTsKCWNvc3RbMV1bM109ODsKCWNvc3RbMV1bNF09LTQ7CgkKCWNvc3RbMl1bMF09MDsKCWNvc3RbMl1bMV09LTI7Cgljb3N0WzJdWzJdPTA7Cgljb3N0WzJdWzNdPTA7Cgljb3N0WzJdWzRdPTA7CgkKCWNvc3RbM11bMF09MDsKCWNvc3RbM11bMV09MDsKCWNvc3RbM11bMl09LTM7Cgljb3N0WzNdWzNdPTA7Cgljb3N0WzNdWzRdPTk7CgkKCWNvc3RbNF1bMF09MjsKCWNvc3RbNF1bMV09MDsKCWNvc3RbNF1bMl09NzsKCWNvc3RbNF1bM109MDsKCWNvc3RbNF1bNF09MDsKCQoJI2VuZGlmCgkKCXByaW50KCk7Cglpbml0KHNvdXJjZSk7CgliZWxsbWFuZm9yZCgpOwp9