import java.io.*;
import java.util.*;
public class Bellmanford
{
public static final int max=999;
public static void
main(String args[])
{
Scanner s=new Scanner(System.in);
int k[ ]=new int[10];
int a[][ ]=new int[30][30];
System.out.println("bellmanford algorithm
implementation ");
System.out.println("Enter the no. of nodes");
int n=s.nextInt();
System.out.println("Enter the adjacency matrix ");
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a[i][j]=s.nextInt();
if(a[i][j]==0)
{
a[i][j]=max;
}
}
}
System.out.println("\n Entered matrix is: ");
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println("Enter the destination vertex");
int d=s.nextInt();
if(d<=n)
{
for(int v=1;v<=n;v++)
{
k[v]=max;
}
k[d]=0;
for(int v=1;v<n-1;v++)
{
for(int x=1;x<=n;x++)
{
for(int y=1;y<=n;y++)
{
if(a[x][y]!=max)
{
if(k[y]>k[x]+a[x][y])
k[y]=k[x]+a[x][y];
}
}
}
}
for(int x=1;x<=n;x++)
{
for(int y=1;y<=n;y++)
{
if(a[x][y]!=max)
{
if(k[y]>k[x]+a[x][y])
System.out.println("negetive edge cycle:");
}
}
}
for(int r=1;r<=n;r++)
{
System.out.println("minimum distance from node
"+r+" to node " +d+ " is " +k[r]);
}
}
}
}
Comments
Post a Comment