/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Program for finding shortest path using dynamic programming approach ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// import java.io.*; import java.util.*; class Multistage { public int stages,stage_vertices[],c[][]; public int cost[],p[],n; public Multistage(int MAX) { c=new int[MAX][MAX]; stage_vertices=new int[MAX]; cost=new int[MAX]; p=new int[MAX]; } public int Get_min(int s,int n) { int min=9999;//equal to infinity int min_vertex=0; for(int i=0; i(c[s][i]+cost[i])) { min=c[s][i]+cost[i]; min_vertex=i; } } return min_vertex; } public void Forward(int n) { int i,r; int d[]; d=new int[20]; for(i=0; i=0; i--) { r=Get_min(i,n); cost[i]=c[i][r]+cost[r]; d[i]=r; } p[0]=0; p[stages-1]=n-1; for(i=1; ijavac Multistage.java D:\DAA_MU>java MultistageDemo Enter no of vertices: 12 Enter no of stages : 5 Enter no of vertices in stage 1: 1 Enter no of vertices in stage 2: 4 Enter no of vertices in stage 3: 3 Enter no of vertices in stage 4: 3 Enter no of vertices in stage 5: 1 Enter cost for 1 to 2: 9 Enter cost for 1 to 3: 7 Enter cost for 1 to 4: 3 Enter cost for 1 to 5: 2 Enter cost for 2 to 6: 4 Enter cost for 2 to 7: 2 Enter cost for 2 to 8: 1 Enter cost for 3 to 6: 2 Enter cost for 3 to 7: 7 Enter cost for 3 to 8: 9999 Enter cost for 4 to 6: 9999 Enter cost for 4 to 7: 9999 Enter cost for 4 to 8: 11 Enter cost for 5 to 6: 9999 Enter cost for 5 to 7: 11 Enter cost for 5 to 8: 8 Enter cost for 6 to 9: 6 Enter cost for 6 to 10: 5 Enter cost for 6 to 11: 9999 Enter cost for 7 to 9: 4 Enter cost for 7 to 10: 3 Enter cost for 7 to 11: 9999 Enter cost for 8 to 9: 9999 Enter cost for 8 to 10: 5 Enter cost for 8 to 11: 6 Enter cost for 9 to 12: 4 Enter cost for 10 to 12: 2 Enter cost for 11 to 12: 5 Shortest path is... -- 1 -- 2 -- 7 -- 10 -- 12