Pagini recente » Cod sursa (job #2614601) | Cod sursa (job #1307410) | Cod sursa (job #3271985) | Cod sursa (job #2222811) | Cod sursa (job #2814023)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
vector<vector<int>> royFloyd(vector<vector<int>> &matrice, int &n) {
vector<vector<int>> distante = matrice;
for(int i = 1; i <= n; i++)
for(int j = 1;j<=n;j++)
if(matrice[i][j] == 0 && i!=j)
distante[i][j] = 1005;
for (int k = 1; k <= n; k++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (distante[i][j] > distante[i][k] + distante[k][j]) {
distante[i][j] = distante[i][k] + distante[k][j];
}
return distante;
}
int main() {
vector<vector<int>> matrice;
int n;
fin >> n;
matrice.resize(n + 1);
for (int i = 1; i <= n; i++) {
matrice[i].resize(n + 1);
for (int j = 1; j <= n; j++) {
int cost;
fin >> cost;
matrice[i][j] = cost;
}
}
vector<vector<int>> distante;
distante = royFloyd(matrice, n);
for (int i = 1; i < distante.size(); i++) {
for (int j = 1; j < distante.size(); j++)
if (i != j)
fout << distante[i][j] << " ";
else
fout << 0 << " ";
fout << "\n";
}
return 0;
}