Pagini recente » Monitorul de evaluare | bbb | redsnow_3 | Cod sursa (job #351336) | Cod sursa (job #1298034)
#include <fstream>
#include <vector>
#include <limits>
const unsigned INF=std::numeric_limits<unsigned>::max()>>1;
int main(){
std::ifstream fin("royfloyd.in");
std::ofstream fout("royfloyd.out");
unsigned n;
fin>>n;
std::vector< std::vector<unsigned> > d(n,std::vector<unsigned>(n));
for(unsigned i=0;i<n;++i)
for(unsigned j=0;j<n;++j){
unsigned x;
fin>>x;
if(x==0) d[i][j]=INF;
else d[i][j]=x;
}
for(unsigned k=0;k<n;++k)
for(unsigned i=0;i<n;++i)
for(unsigned j=0;j<n;++j)
if(d[i][j] > d[i][k]+d[k][j])
d[i][j] = d[i][k]+d[k][j];
for(unsigned i=0;i<n;++i){
for(unsigned j=0;j<n;++j)
if(d[i][j]==INF||i==j) fout<<"0 ";
else fout<<d[i][j]<<' ';
fout<<'\n';
}
}