Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define infinit 1000000000
- using namespace std;
- ifstream f("dijkstra.in");
- ofstream g("dijkstra.out");
- int a[200][200],d[200],v[200],n,i,j,k,p,pmax,c;
- int main()
- {f>>n>>p;
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- a[i][j]=infinit;
- while(f>>i>>j>>c)
- a[i][j]=c;
- for(i=1;i<=n;i++)
- {
- v[i]=0;
- d[i]=a[p][i];
- }
- d[0]=infinit;
- d[p]=0;
- v[p]=i;
- for(k=1;k<=n;k++)
- {
- pmax=0;
- for(i=1;i<=n;i++)
- if(v[i]==0&&d[i]<d[pmax])
- pmax=i;
- v[pmax]=1;
- for(i=1;i<=n;i++)
- if(v[i]==0&&d[i]>d[pmax]+a[pmax][i])
- d[i]=d[pmax]+a[pmax][i];
- }
- for(i=1;i<=n;i++)
- if(d[i]!=infinit)
- g<<d[i]<<" ";
- else
- g<<-1<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement