Cod sursa(job #1705971)

Utilizator FlorentinaPetcuFlorentina Petcu FlorentinaPetcu Data 21 mai 2016 10:36:17
Problema Floyd-Warshall/Roy-Floyd Scor 30
Compilator java Status done
Runda Arhiva educationala Marime 1.19 kb
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main {
	static int[][] dist;

	public static void FloydWarshall() {
		int n = dist.length;

		for (int k = 0; k < n; k++) {
			for (int i = 0; i < n; i++) {
				for (int j = 0; j < n; j++) {
					if (i != j)
						dist[i][j] = Math.min(dist[i][j], dist[i][k] + dist[k][j]);
				}
			}
		}

	}

	public static void main(String[] args) throws IOException {

		Scanner input = new Scanner(new FileReader("royfloyd.in"));
		int nodes = input.nextInt();
		dist = new int[nodes][nodes];

		for (int i = 0; i < nodes; i++)
			for (int j = 0; j < nodes; j++) {
				int c = input.nextInt();
				if (c == 0)
					dist[i][j] = 1000;
				else
					dist[i][j] = c;
			}
		input.close();

		FloydWarshall();
		BufferedWriter write = new BufferedWriter(new FileWriter(new File("royfloyd.out")));
		for (int i = 0; i < nodes; i++) {
			for (int j = 0; j < nodes; j++)
				if (dist[i][j] == 1000)
					write.write("0 ");
				else
					write.write(dist[i][j] + " ");
			write.newLine();
		}
		write.close();
	}
}