Pagini recente » Cod sursa (job #3131839) | Cod sursa (job #1484722) | Cod sursa (job #2823726) | Cod sursa (job #1820443) | Cod sursa (job #3313196)
use std::fs::File;
#[allow(unused_imports)]
use std::io::{BufRead, BufReader, Read, Write};
use std::{cmp::min, error::Error};
const FILE: &'static str = "royfloyd";
fn main() -> Result<(), Box<dyn Error>> {
let mut fin = BufReader::new(File::open(format!("{}.in", FILE)).unwrap());
let mut fout = File::create(format!("{}.out", FILE)).unwrap();
let mut buf = String::new();
fin.read_line(&mut buf)?;
let n = buf.trim().parse::<usize>()?;
buf.clear();
fin.read_to_string(&mut buf)?;
let mut iterator = buf.trim().split_whitespace();
let mut graf = vec![vec![0; n]; n];
for i in 0..n {
for j in 0..n {
graf[i][j] = iterator.next().unwrap().parse::<usize>()?;
}
}
for k in 0..n {
for i in 0..n {
if graf[i][k] == 0 {
continue;
}
for j in 0..n {
if graf[k][j] == 0 {
continue;
}
graf[i][j] = min(graf[i][j], graf[i][k] + graf[k][j]);
}
}
}
for i in 0..n {
for j in 0..n {
write!(&mut fout, "{} ", graf[i][j])?;
}
write!(&mut fout, "\n")?;
}
Ok(())
}