Frog Jump Program
Frog Jump Program
h>
#include <stdlib.h>
#include <stdbool.h>
#include <limits.h>
Graph* createGraph(int V) {
Graph* graph = (Graph*)malloc(sizeof(Graph));
graph->V = V;
graph->adj = (int**)malloc(V * sizeof(int*));
for (int i = 0; i < V; i++) {
graph->adj[i] = (int*)malloc(V * sizeof(int));
for (int j = 0; j < V; j++) {
graph->adj[i][j] = 0; // Initialize with 0 (no edge)
}
}
return graph;
}
int main() {
int m, n;
scanf("%d %d", &m, &n);
int r[m][n], d[m][n];
Graph* obj = createGraph(m * n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &r[i][j]);
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &d[i][j]);
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
for (int k = 1; k <= r[i][j]; k++) {
if (j + k < n)
addEdge(obj, i * n + j, i * n + j + k, 1); // Rightward edge
with weight 1
}
for (int k = 1; k <= d[i][j]; k++) {
if (i + k < m)
addEdge(obj, i * n + j, (i + k) * n + j, 1); // Downward edge
with weight 1
}
}
}
int result = BFS(obj);
printf("%d\n", result);
return 0;
}