Mai intai trebuie sa te autentifici.
Cod sursa(job #2414247)
Utilizator | Data | 24 aprilie 2019 13:15:40 | |
---|---|---|---|
Problema | Floyd-Warshall/Roy-Floyd | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.74 kb |
#include <bits/stdc++.h>
#define NMAX 101
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int n, v[NMAX][NMAX];
void citire()
{
fin >> n;
for(int i = 1; i <= n; ++i)
for( int j = 1; j<= n; ++j)
fin >> v[i][j];
}
void royfloyd()
{
for(int k = 1 ; k <=n ; ++k)
for(int i = 1 ; i <=n ; ++i)
for(int j = 1 ; j <=n ; ++j)
{
if(i==j||!v[i][k]||!v[k][j])continue;
if(v[i][j] > ( v[i][k] + v[k][j] ) || v[i][j] == 0)
v[i][j] = v[i][k] + v[k][j];
}
}
int main()
{
citire();
royfloyd();
for(int i = 1;i <= n; ++i,fout<<"\n")
for(int j = 1; j <=n ; ++j,fout<<" ")fout<<v[i][j];
return 0;
}