Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream.h>
- #include<fstream.h>
- const int maxi = 500;
- int i, j, a[100][100], arc, c, r, q, poz, x, y, s[100], t[100], d[100], mini, n;
- ifstream f("date.in");
- void citire()
- {
- f>>n;
- for(int i=1; i<=n; i++)
- {
- for(int j=1; j<=n; j++)
- a[i][j] = maxi;
- a[i][i] = 0;
- }
- f>>arc;
- for(int i=1; i<=arc; i++)
- {
- f>>x>>y>>c;
- a[x][y] = c;
- }
- }
- void drum(int i)
- {
- if(t[i])
- drum(t[i]);
- cout<<i<<" ";
- }
- int main()
- {
- citire();
- cout<<"Punct de plecare: "; cin>>r;
- cout<<"Punct de sosire: "; cin>>q;
- cout<<'\n';
- s[r] = 1;
- for(int i=1; i<=n; i++)
- {
- d[i] = a[r][i];
- if(i != r) if(d[i] < maxi) t[i] = r;
- }
- for(int i=1; i<=n-1; i++)
- {
- mini=maxi;
- for(int j=1; j<=n; j++)
- if(s[j] == 0)
- if(d[j] < mini)
- {
- mini = d[j];
- poz = j;
- }
- s[poz] = 1;
- for(int j=1; j<=n; j++)
- if(s[j] == 0)
- if(d[j] > d[poz] + a[poz][j])
- {
- d[j] = d[poz] + a[poz][j];
- t[j] = poz;
- }
- }
- if(r < q)
- {
- for(int i=r; i<=q; i++)
- if(i != r)
- if(t[i])
- if(i == q)
- {
- cout<<"Drumul de la "<<r<<" la "<<i<<" este "<<d[i]<<" si trece prin varf:";
- drum(i);
- cout<<'\n';
- }
- else cout<<"Nu avem drum de la "<<r<<" la "<<i<<'\n';
- }
- else
- {
- for(int i=r; i>=q; i--)
- if(i != r)
- if(t[i])
- if(i == q)
- {
- cout<<"Drumul de la "<<r<<" la "<<i<<" este "<<d[i]<<" si trece prin varf.";
- drum(i);
- cout<<'\n';
- }
- else cout<<"Nu avem drum de la "<<r<<" la "<<i<<'\n';
- }
- f.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment