This is a code of standardized alorithm called as dijsktra algorithm.. But its giving me an error at calling dijsltra function as follows
error: cannot convert 'int (*)[(((sizetype)(((ssizetype)n) + -1)) + 1)]' to 'int (*)[9]' for argument '1' to 'void dijkstra(int (*)[9], int)
My code is
#include<iostream>
using namespace std;
#define inf 999;
const int V=0;
int minDistance(int dist[], bool sptSet[])
{
int min=inf;
int min_index;
for (int v = 0; v < V; v++)
{
if ((sptSet[v] == false) &&(dist[v] <= min) )
min = dist[v];
min_index = v;
}
return min_index;
}
void dijkstra(int graph[V][V], int src)
{
int dist[V];
bool sptSet[V];
for (int i = 0; i < V; i++)
{
dist[i] = inf;
sptSet[i] = false;
}
dist[src] = 0;
for (int count = 0; count < V-1; count++)
{
int u = minDistance(dist, sptSet);
sptSet[u] = true;
for (int v = 0; v < V; v++)
{
if (!sptSet[v] && graph[u][v] && dist[u] != 999 && (dist[u]+graph[u][v] < dist[v]))
{
dist[v] = dist[u] + graph[u][v];
}
}
}
}
int main()
{
int size;
int n;
cin>>n;
size=n;
int matrix[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
{
if((j+1==i+2)||(j+1==3*(i+1)))
matrix[i][j]=1;
else
matrix[i][j]=0;
}
}
dijkstra(matrix,0);
cout<<matrix[0][n-1]<<endl;
}