Pagini recente » Cod sursa (job #818361) | Cod sursa (job #599330) | Cod sursa (job #896696) | Cod sursa (job #671061) | Cod sursa (job #2653291)
use std::fs;
use std::fs::File;
use std::io::{BufRead, BufReader, BufWriter, Write, Read};
use std::cmp;
use std::i32::MAX;
const INF:i32 = MAX;
fn main() {
let mut FIN = BufReader::new(File::open("royfloyd.in").unwrap());
let mut FOUT = BufWriter::new(File::create("royfloyd.out").unwrap());
let mut line = String::new();
FIN.read_line(&mut line).unwrap();
let siz: usize = line.trim().parse().unwrap();
let mut dist: Vec<Vec<i32>> = vec![vec![0; siz]; siz];
for i in 0..siz{
line.clear();
FIN.read_line(&mut line).unwrap();
dist[i] = line.trim().split_whitespace().map(|x| x.parse().unwrap()).collect();
}
for i in 0..siz{
for j in 0..siz{
if dist[i][j] == 0 && i != j{
dist[i][j] = INF;
}
}
}
for k in 0..siz{
for i in 0..siz{
for j in 0..siz{
if i != k && j != k && i != j{
if ((dist[i][k] as i64) + (dist[k][j] as i64)) < (dist[i][j] as i64){
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
}
for i in 0..siz{
for j in 0..siz{
FOUT.write(format!("{} ", dist[i][j]).as_bytes());
}
FOUT.write(format!("\n").as_bytes());
}
}