#include<stdio.h>
void dist_vector( int n) ;
void init( int n) ;
// Creating structure node
struct node {
unsigned int dist[ 20 ] , nexthop[ 20 ] ;
} route[ 10 ] ;
int i, j;
// Main function
void main( ) {
int n, i, j;
printf ( "Enter the number of routers: " ) ;
init( n) ;
printf ( "Enter the cost matrix (999 for no link):\n " ) ; for ( i = 0 ; i < n; i++ )
for ( j = 0 ; j < n; j++ )
scanf ( "%d" , & route
[ i
] .
dist [ j
] ) ;
dist_vector( n) ;
printf ( "\n ------------------------------------" ) ; printf ( "\n Updated Distance Vector Table\n " ) ; printf ( "--------------------------------------\n " ) ;
for ( i = 0 ; i < n; i++ ) {
for ( j = 0 ; j < n; j++ ) {
}
}
printf ( "%d\t " , route
[ i
] .
dist [ j
] ) ; printf ( "\n ----------------------------\n " ) ;
for ( i = 0 ; i < n; i++ ) {
printf ( "\n Routing table for node %c table\n " , 65 + i
) ; printf ( "-------------------------\n " ) ; printf ( "Desti\t Cost\t Next hop\n " ) ; printf ( "--------------------------\n " ) ;
for ( int j = 0 ; j < n; j++ )
if ( i != j)
printf ( "%c\t %d\t %c\n " , 65 + j
, route
[ i
] .
dist [ j
] , 65 + route
[ i
] .
nexthop [ j
] ) ; }
}
// Initialization
void init( int n) {
int i, j;
for ( i = 0 ; i < n; i++ ) {
for ( j = 0 ; j < n; j++ ) {
if ( i != j) {
route[ i] .dist [ j] = 999 ;
route[ i] .nexthop [ j] = - 20 ;
}
route[ i] .dist [ i] = 0 ;
route[ i] .nexthop [ j] = - 20 ;
}
}
}
void dist_vector( int n) {
int count;
do {
count = 0 ;
for ( int i = 0 ; i < n; i++ ) {
for ( int j = 0 ; j < n; j++ ) {
for ( int k = 0 ; k < n; k++ ) {
if ( ( route[ i] .dist [ j] ) > ( route[ i] .dist [ k] + route[ k] .dist [ j] ) ) {
route[ i] .dist [ j] = route[ i] .dist [ k] + route[ k] .dist [ j] ;
route[ i] .nexthop [ j] = k;
count = 1 ;
}
}
}
}
} while ( count) ;
}
I2luY2x1ZGU8c3RkaW8uaD4gCgp2b2lkIGRpc3RfdmVjdG9yKGludCBuKTsgCnZvaWQgaW5pdChpbnQgbik7IAoKLy8gQ3JlYXRpbmcgc3RydWN0dXJlIG5vZGUgCnN0cnVjdCBub2RlIHsgCiAgICB1bnNpZ25lZCBpbnQgZGlzdFsyMF0sIG5leHRob3BbMjBdOyAKfSByb3V0ZVsxMF07IAoKaW50IGksIGo7IAoKLy8gTWFpbiBmdW5jdGlvbiAKdm9pZCBtYWluKCkgeyAKICAgIGludCBuLCBpLCBqOyAKICAgIHByaW50ZigiRW50ZXIgdGhlIG51bWJlciBvZiByb3V0ZXJzOiAiKTsgCiAgICBzY2FuZigiJWQiLCAmbik7IAoKICAgIGluaXQobik7IAoKICAgIHByaW50ZigiRW50ZXIgdGhlIGNvc3QgbWF0cml4ICg5OTkgZm9yIG5vIGxpbmspOlxuIik7IAogICAgZm9yKGkgPSAwOyBpIDwgbjsgaSsrKSAgCiAgICAgICAgZm9yKGogPSAwOyBqIDwgbjsgaisrKSAgCiAgICAgICAgICAgIHNjYW5mKCIlZCIsICZyb3V0ZVtpXS5kaXN0W2pdKTsgCgogICAgZGlzdF92ZWN0b3Iobik7IAoKICAgIHByaW50ZigiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsgCiAgICBwcmludGYoIlxuVXBkYXRlZCBEaXN0YW5jZSBWZWN0b3IgVGFibGVcbiIpOyAKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOyAKCiAgICBmb3IoaSA9IDA7IGkgPCBuOyBpKyspIHsgCiAgICAgICAgZm9yKGogPSAwOyBqIDwgbjsgaisrKSB7IAogICAgICAgIH0gIAogICAgICAgIHByaW50ZigiXG4iKTsgCiAgICB9ICAKCiAgICBwcmludGYoIiVkXHQiLCByb3V0ZVtpXS5kaXN0W2pdKTsgCiAgICBwcmludGYoIlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7IAoKICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykgeyAKICAgICAgICBwcmludGYoIlxuUm91dGluZyB0YWJsZSBmb3Igbm9kZSAlYyB0YWJsZVxuIiwgNjUgKyBpKTsgCiAgICAgICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsgCiAgICAgICAgcHJpbnRmKCJEZXN0aVx0IENvc3RcdCBOZXh0IGhvcFxuIik7IAogICAgICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOyAKCiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IG47IGorKykgIAogICAgICAgICAgICBpZihpICE9IGopICAKICAgICAgICAgICAgICAgIHByaW50ZigiJWNcdCVkXHQlY1xuIiwgNjUgKyBqLCByb3V0ZVtpXS5kaXN0W2pdLCA2NSArIHJvdXRlW2ldLm5leHRob3Bbal0pOyAKICAgIH0gCn0gCgovLyBJbml0aWFsaXphdGlvbiAKdm9pZCBpbml0KGludCBuKSB7IAogICAgaW50IGksIGo7IAogICAgZm9yKGkgPSAwOyBpIDwgbjsgaSsrKSB7IAogICAgICAgIGZvcihqID0gMDsgaiA8IG47IGorKykgeyAKICAgICAgICAgICAgaWYoaSAhPSBqKSB7IAogICAgICAgICAgICAgICAgcm91dGVbaV0uZGlzdFtqXSA9IDk5OTsgCiAgICAgICAgICAgICAgICByb3V0ZVtpXS5uZXh0aG9wW2pdID0gLTIwOyAKICAgICAgICAgICAgfSAKICAgICAgICAgICAgcm91dGVbaV0uZGlzdFtpXSA9IDA7IAogICAgICAgICAgICByb3V0ZVtpXS5uZXh0aG9wW2pdID0gLTIwOyAKICAgICAgICB9IAogICAgfSAKfSAKCnZvaWQgZGlzdF92ZWN0b3IoaW50IG4pIHsgCiAgICBpbnQgY291bnQ7IAogICAgZG8geyAKICAgICAgICBjb3VudCA9IDA7IAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7IAogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47IGorKykgeyAKICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbjsgaysrKSB7IAogICAgICAgICAgICAgICAgICAgIGlmICgocm91dGVbaV0uZGlzdFtqXSkgPiAocm91dGVbaV0uZGlzdFtrXSArIHJvdXRlW2tdLmRpc3Rbal0pKSB7IAogICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVtpXS5kaXN0W2pdID0gcm91dGVbaV0uZGlzdFtrXSArIHJvdXRlW2tdLmRpc3Rbal07IAogICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVtpXS5uZXh0aG9wW2pdID0gazsgCiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMTsgCiAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0gCiAgICAgICAgfSAKICAgIH0gd2hpbGUgKGNvdW50KTsgCn0gCg==