Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- using namespace std;
- int n,m,d[100][100];
- float c[100][100], infinit=10000,cost;
- void citire()
- {int i,x,y;
- ifstream f("date2.in");
- f>>n>>m;
- for(i=1;i<=m;i++)
- {f>>x>>y>>cost;
- c[x][y]=cost;
- }
- for(i=1;i<=n;i++)
- for(int j=1;j<=n;j++)
- if(i!=j && c[i][j]==0)
- c[i][j]=infinit;
- }
- void drum_initial()
- {int i,j,k;
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- if(i!=j && c[i][j]!=infinit)
- d[i][j]=i;
- if(i!=j && c[i][j]==infinit)
- d[i][j]=infinit;
- }
- void drum(int i, int j)
- {if(i==j)
- cout<<i<<" ";
- else {drum(i,d[i][j]);
- cout<<j<<" ";}
- }
- void afisare()
- {int i,j;
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- for(j=1;j<=n;j++)
- if(i!=j)
- if(c[i][j]!=infinit)
- {cout<<"costul drumului de la "<<i<<" la "<<j<<" = "<<c[i][j]<<endl;
- cout<<"drumul este: ";
- drum(i,j);
- cout<<endl; }
- else cout<<"Nu exista drum de la "<<i<<" la "<<j<<endl;
- }
- void Floyd()
- {int i,j,k;
- for(k=1;k<=n;k++)
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- if(c[i][j]>(c[i][k]+c[k][j]))
- {c[i][j]=c[i][k]+c[k][j];
- d[i][j]=d[k][j];}
- }
- int main()
- {citire();
- drum_initial();
- Floyd();
- afisare();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement