Pagini recente » Cod sursa (job #188511) | Cod sursa (job #2285816) | Cod sursa (job #1399732) | Cod sursa (job #593) | Cod sursa (job #2863587)
use std::fs::File;
use std::io::{BufRead, BufReader, Write};
use std::cmp;
fn main () {
let mut f = BufReader::new(File::open("royfloyd.in").unwrap());
let mut n = String::new();
f.read_line(&mut n).unwrap();
let n: usize = n.trim().parse().unwrap();
let mut mat: Vec<Vec<u64>> = f.lines()
.take(n)
.map(|l| l.unwrap().split(char::is_whitespace)
.take(n)
.map(|number| number.parse().unwrap())
.collect())
.collect();
for (i, vec) in mat.iter_mut().enumerate() {
for (j, val) in vec.iter_mut().enumerate() {
if i != j && *val == 0 {
*val = 1_000_000_000;
}
}
}
for k in 0 .. n {
for i in 0 .. n {
for j in 0 .. n {
mat[i][j] = cmp::min(mat[i][j], mat[i][k] + mat[k][j]);
}
}
}
for (i, vec) in mat.iter_mut().enumerate() {
for (j, val) in vec.iter_mut().enumerate() {
if i != j && *val == 1_000_000_000 {
*val = 0;
}
}
}
let mat = mat;
let mut g = File::create("royfloyd.out").unwrap();
for line in &mat {
for element in line {
write!(g, "{} ", element).unwrap();
}
write!(g, "\n").unwrap();
}
}