Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #define inf 9999
- using namespace std;
- ifstream fin("date.in");
- int n,m,x,y,viz[100],pred[100],d[100];/// afis dr xy
- double c[100][100];
- void af()
- {
- for(int i=1;i<=n;i++)
- {for(int j=1;j<=n;j++)
- cout<<c[i][j]<<" ";
- cout<<endl;}
- }
- void init()
- {
- double cost;
- fin>>n>>m;
- for(int i=1;i<n;i++)
- for(int j=i+1;j<=n;j++)
- c[i][j]=inf,c[j][i]=inf;
- for(int i=1;i<=m;i++)
- fin>>x>>y>>cost,c[x][y]=cost;
- fin>>x>>y;
- for(int i=1;i<=n;i++)
- d[i]=c[x][i],pred[i]=x;
- viz[x]=1;
- pred[x]=0;
- d[x]=0;
- }
- void di()
- {
- double dmin;
- int vfmin;
- for(int j=1;j<n;j++)
- {
- dmin=inf;
- for(int i=1;i<=n;i++)
- if(d[i]<dmin)
- dmin=d[i],vfmin=i;
- viz[vfmin]=1;
- for(int i=1;i<=n;i++)
- if(d[i]>d[vfmin]+c[vfmin][i])
- d[i]=d[vfmin]+c[vfmin][i],pred[i]=vfmin;
- }
- }
- void afis_drum(int u)
- {
- if(!u)
- return;
- afis_drum(pred[u]);
- cout<<u<<" ";
- }
- void afis()
- {
- if(d[y]<inf)
- {
- cout<<"drumul de la "<<x<<" la "<<y<<":";
- afis_drum(y);
- }
- else cout<<"Nu exitsa drum";
- }
- int main()
- {
- init();
- di();
- afis();
- cout<<endl<<c[x][y];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement