source: proiecte/pgraph/Code/Bellman-Ford/bell2.cpp @ 129

Last change on this file since 129 was 129, checked in by (none), 14 years ago
File size: 1.0 KB
Line 
1//Author Antonio-Gabriel Sturzu
2
3#include<stdio.h>
4#include<vector>
5#include<time.h>
6#define pb push_back
7#define mp make_pair
8#define inf 0x3f3f3f3f
9
10using namespace std;
11
12int main()
13{
14        int n,m,i,j,k,a,b,c,d[50001],flag=0;
15        vector < pair<int,int> > v[50001];
16        clock_t start,stop;
17        FILE *f=fopen("bell.in","r");
18       
19        fscanf(f,"%i%i",&n,&m);
20        for(i=0;i<m;i++)
21        {
22                fscanf(f,"%i%i%i",&a,&b,&c);
23                v[a].pb(mp(b,c));
24        }
25        fclose(f);
26
27        start=clock();
28        d[1]=0;
29        for(i=2;i<=n;i++)
30                d[i]=inf;
31
32        for(i=0;i<n-1;i++)
33        {
34                flag=0;
35                for(j=1;j<=n;j++)
36                {
37                        for(k=0;k<(int) v[j].size();k++)
38                        {
39                                if(d[j]+v[j][k].second<d[v[j][k].first])
40                                {
41                                        d[v[j][k].first]=d[j]+v[j][k].second;
42                                        flag=1;
43                                }
44                        }
45                }
46                if(flag==0)
47                        break;
48        }
49        stop=clock();
50        printf("Au trecut %f secunde\n",(double)(stop-start)/CLOCKS_PER_SEC);
51
52        f=fopen("bell.out","w");
53        for(i=2;i<=n;i++)
54        {
55                if(d[i]==inf)
56                        d[i]=0;
57                fprintf(f,"%i ",d[i]);
58        }
59        fprintf(f,"%s","\n");
60        fclose(f);
61        return 0;
62}
Note: See TracBrowser for help on using the repository browser.