source: proiecte/pgraph/Code/Dijkstra/dijkstra2.c @ 129

Last change on this file since 129 was 129, checked in by (none), 14 years ago
File size: 1.1 KB
Line 
1//Author Antonio-Gabriel Sturzu
2
3#include<stdio.h>
4#include<string.h>
5#include<stdlib.h>
6#include<time.h>
7#define inf 50000001
8
9
10int main()
11{
12        int d[10005],min,**mat,i,j,n,nod;
13        char viz[10005];
14        clock_t start,stop;
15        FILE *f=fopen("dijkstra.in","r");
16
17        fscanf(f,"%i",&n);
18        mat=(int **) calloc(n*n,sizeof(int *));
19        for(i=0;i<n;i++)
20                mat[i]=(int *) calloc(n,sizeof(int));
21
22        for(i=0;i<n;i++)
23                for(j=0;j<n;j++)
24                        fscanf(f,"%i",&mat[i][j]);
25        fclose(f);
26
27        memset(viz,0,sizeof(viz));
28        start=clock();
29        d[0]=0;
30        for(i=1;i<n;i++)
31                d[i]=inf;
32
33        for(;;)
34        {
35                min=inf;
36                for(i=0;i<n;i++)
37                {
38                        if(viz[i]==0 && d[i]<min)
39                        {
40                                min=d[i];
41                                nod=i;
42                        }
43                }
44                if(min==inf)
45                        break;
46                viz[nod]=1;
47
48                for(i=0;i<n;i++)
49                {
50                        if(mat[nod][i]+d[nod]<d[i] && mat[nod][i]!=-1)
51                                d[i]=mat[nod][i]+d[nod];
52                }
53        }
54        stop=clock();
55        printf("Au trecut %f secunde",(double)(stop-start)/CLOCKS_PER_SEC);
56
57        f=fopen("dijkstra.out","w");
58        for(i=1;i<n;i++)
59        {
60                if(d[i]==inf)
61                        d[i]=0;
62                fprintf(f,"%i ",d[i]);
63        }
64        fprintf(f,"%s","\n");
65        fclose(f);
66        for(i=0;i<n;i++)
67                free(mat[i]);
68        free(mat);
69        return 0;
70}
Note: See TracBrowser for help on using the repository browser.