dij.c
unknown
plain_text
2 years ago
1.4 kB
2
Indexable
#include<stdio.h> #include<limits.h> #include<stdbool.h> #define V 9 int mindist(int dist[],bool spt[]) { int min_dist = INT_MAX,min_index; for(int v=0;v<V;v++) { if(spt[v]==false && dist[v]<=min_dist) { min_dist=dist[v],min_index=v;; } } return min_index; } void dijk(int graph[V][V],int src) { int dist[V],count,v,i; bool spt[V]; for(i=0;i<V;i++) { dist[i]=INT_MAX; spt[i]=false; } dist[src]=0; for(count=0;count<V-1;count++) { int u = mindist(dist,spt); spt[u] = true; for(v=0;v<V;v++) { if(!spt[v] && graph[u][v] && dist[u]!=INT_MAX && (dist[u]+graph[u][v])<dist[v]) { dist[v]=dist[u]+graph[u][v]; } } } for(i=0;i<V;i++) { printf("%d\n",dist[i]); } } int main() { int graph[V][V] = { { 0, 4, 0, 0, 0, 0, 0, 8, 0 }, { 4, 0, 8, 0, 0, 0, 0, 11, 0 }, { 0, 8, 0, 7, 0, 4, 0, 0, 2 }, { 0, 0, 7, 0, 9, 14, 0, 0, 0 }, { 0, 0, 0, 9, 0, 10, 0, 0, 0 }, { 0, 0, 4, 14, 10, 0, 2, 0, 0 }, { 0, 0, 0, 0, 0, 2, 0, 1, 6 }, { 8, 11, 0, 0, 0, 0, 1, 0, 7 }, { 0, 0, 2, 0, 0, 0, 6, 7, 0 } }; dijk(graph,0); return 0; }
Editor is loading...
Leave a Comment