Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream in("dijkstra.in");
- ofstream out("dijkstra.out");
- int viz[101],prec[101],d[101],c[101][101];
- int main()
- {
- const int inf=100000000;
- int n,p;
- in>>n>>p;
- int x,y,cs;
- for(int i=1; i<=n; i++)
- {
- for(int j=1; j<=n; j++)
- if(i!=j)
- c[i][j]=inf;
- }
- while(in>>x>>y>>cs)
- {
- c[x][y]=cs;
- }
- viz[p]=1;
- for(int i=1; i<=n; i++)
- {
- d[i]=c[p][i];
- if(c[p][i]!=inf && i!=p)
- prec[i]=p;
- }
- int gata;
- gata=0;
- int minim,imin;
- for(int k=1; k<n && !gata; k++)
- {
- minim=inf;
- for(int i=1; i<=n; i++)
- if(viz[i]==0 && d[i]<minim)
- {
- minim=d[i];
- imin=i;
- }
- if(minim==inf)
- gata=1;
- else
- {
- viz[imin]=1;
- for(int i=1; i<=n; i++)
- if(viz[i]==0)
- {
- if(d[i]>d[imin]+c[imin][i])
- {
- d[i]=d[imin]+c[imin][i];
- prec[i]=imin;
- }
- }
- }
- }
- for(int i=1; i<=n; i++)
- {
- if(d[i]!=inf)
- out<<d[i]<<" ";
- else
- out<<"-1"<<" ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement