Pagini recente » Cod sursa (job #1684142) | Cod sursa (job #1969744) | Cod sursa (job #1662788) | Cod sursa (job #426268) | Cod sursa (job #3153285)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
const int INF = (1 << 30);
int main() {
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int N;
fin >> N;
vector <vector <int>> dp(N, vector <int>(N, INF));
for (int i = 0;i < N;++i) {
for (int j = 0;j < N;++j) {
fin >> dp[i][j];
}
}
for (int k = 0;k < N;++k) {
for (int i = 0;i < N;++i) {
for (int j = 0;j < N;++j) {
int dp1 = dp[i][k], dp2 = dp[k][j];
if (dp1 != INF && dp2 != INF) {
dp[i][j] = min(dp[i][j], dp1 + dp2);
}
}
}
}
for (int i = 0;i < N;++i) {
for (int j = 0;j < N;++j) {
if (dp[i][j] == INF) {
dp[i][j] = 0;
}
}
}
for (int i = 0;i < N;++i) {
for (int j = 0;j < N;++j) {
fout << dp[i][j] << " \n"[j == N - 1];
}
}
fin.close();
fout.close();
return 0;
}