-
Notifications
You must be signed in to change notification settings - Fork 0
/
prog6.c
106 lines (103 loc) · 2.53 KB
/
prog6.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
// #include <stdio.h>
// #define INFINITY 999
// void dijkstra(int cost[10][10], int n, int source, int v[10], int d[10])
// {
// int min, i, j, u;
// v[source] = 1;
// for (i = 1; i <= n; i++)
// {
// min = INFINITY;
// for (j = 1; j <= n; j++)
// {
// if (v[j] == 0 && d[j] < min)
// {
// min = d[j];
// u = j;
// }
// }
// v[u] = 1;
// for (j = 1; j <= n; j++)
// {
// if (v[j] == 0 && (d[j] > (d[u] + cost[u][j])))
// d[j] = d[u] + cost[u][j];
// }
// }
// }
// int main()
// {
// int n;
// int cost[10][10];
// int sourceNode;
// int v[10];
// int d[10];
// int i, j;
// printf("Enter n: ");
// scanf("%d", &n);
// printf("Enter Cost Adjacency matrix:\n");
// for (i = 1; i <= n; i++)
// for (j = 1; j <= n; j++)
// scanf("%d", &cost[i][j]);
// printf("Enter the source (%d to %d):\n", 1, n);
// scanf("%d", &sourceNode);
// for (i = 1; i <= n; i++)
// {
// d[i] = cost[sourceNode][i];
// v[i] = 0;
// }
// dijkstra(cost, n, sourceNode, v, d);
// printf("Shortest distance from %d\n\n", sourceNode);
// for (i = 1; i <= n; i++)
// printf("%d --> %d = %d\n\n", sourceNode, i, d[i]);
// return 0;
// }
#include <stdio.h>
#include <stdlib.h>
#define INF 999
void djikstra(int cost[10][10], int v[10], int source, int n, int d[])
{
int min, i, j, u;
v[source] = 1;
for (i = 1; i <= n; i++)
{
min = 999;
for (j = 1; j <= n; j++)
{
if (v[j] == 0 && d[j] < min){
min = d[j];
u = j;}
}
v[u] = 1;
for (j = 1; j <= n; j++)
{
if (v[j] == 0 && (d[j] > d[u] + cost[u][j]))
d[j] = d[u] + cost[u][j];
}
}
}
int main()
{
int n, cost[10][10], i, j, d[10], v[10], source;
printf("Enter the number of nodes\n");
scanf("%d", &n);
printf("Enter the cost matrix\n");
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
scanf("%d", &cost[i][j]);
}
}
printf("Enter the source from %d to %d\n", 1, n);
scanf("%d", &source);
for (i = 1; i <= n; i++)
{
d[i] = cost[source][i];
v[i] = 0;
}
djikstra(cost, v, source, n, d);
printf("Shortest path will be\n");
for (i = 1; i <= n; i++)
{
printf("%d-->%d==%d\n", source, i, d[i]);
}
}