#include<stdio.h>
#include<limits.h>
#define INF 99999

void dijkstra(int n, int graph[100][100],int start){
    int distance[100], visited[100];
    int i,j,count,min,u;
    
    for(i=0;i<n;i++){
        distance[i]=INF;
        visited[i]=0;
    }
    
    distance[start]=0;
    for(count=0;count<n-1;count++){
        min=INF;
        for(i=0;i<n;i++){
            if(!visited[i]&&distance[i]<min){
                min=distance[i];
                u=i;
            }
        }
        visited[u]=1;
        for(i=0;i<n;i++){
            if(!visited[j]&&graph[u][j]&&distance[u]+graph[u][j]<distance[j]){
                distance[j]=distance[u]+graph[u][j];
            }
        }
    }
    for(i=0;i<n;i++){
        printf("%d",distance[i]);
        if(i<n-1)
        printf("\n");
    }
    int main(){
        int n=3;
        int graph[100][100]={
            {0,2,5},
            {2,0,3},
            {5,3,0}
        };
        int start=0;
        
       dijkstra(n, graph, start);
        return 0;
        }
    }