Pagini recente » Cod sursa (job #672295) | Cod sursa (job #232285) | Cod sursa (job #1084872) | Cod sursa (job #235417) | Cod sursa (job #2815074)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
#include <algorithm>
#include <queue>
#define MAX 100001
#define INF 1000000001
using namespace std;
ifstream fin ("cine.in");
ofstream fout("cine.out");
class Graf{
public:
int mN;
vector<vector<int> > M;
Graf(int N, vector<vector<int> > &m):mN(N), M(m){}
void RoyFloyd();
};
void Graf :: RoyFloyd(){
int i,j,k;
for(int k = 1; k <= mN; k++){
for(int i = 1; i <= mN; i++){
for(int j = 1; j <= mN; j++){
M[i][j] = min(M[i][j], M[i][k] + M[k][j]);
}
}
}
for(int i = 1; i <= mN; i++){
for(int j = 1; j <= mN; j++){
if(M[i][j] != INF){
fout << M[i][j] <<" ";
}
else
fout << 0 << " ";
}
fout << "\n";
}
}
int main(){
int N, M;
fin >> N;
vector<vector<int> > m(N+1);
for(int i = 1; i <= N; i++){
m[i].resize(N+1, 0);
}
for(int i = 1; i <= N; i++){
for(int j =1; j <= N; j++){
fin >> m[i][j];
if(!m[i][j] && i != j){
m[i][j] = INF;
}
}
}
Graf G(N,m);
G.RoyFloyd();
return 0;
}