Cod sursa(job #1705617)

Utilizator deeagrtAndGrt deeagrt Data 20 mai 2016 21:00:46
Problema Floyd-Warshall/Roy-Floyd Scor 60
Compilator java Status done
Runda Arhiva educationala Marime 1.36 kb

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
public class Main {
	 static int [][] adj;

	 
	public static void main(String[] args) throws IOException {
		 BufferedReader bf = new BufferedReader(new FileReader("royfloyd.in"));
		 OutputStream out = new BufferedOutputStream ( new FileOutputStream("royfloyd.out") );
	     String a = bf.readLine();
	     int n = Integer.parseInt(a);
		 adj = new int[n+1][n+1];
		 String[] tmp;
		
	     for (int i = 0; i < n; i++) {
	    	 a = bf.readLine();
	    	 tmp = a.split(" ");
	    	 for (int j = 0; j < n; j++){ 
	    		 adj[i][j] = (int)Integer.parseInt(tmp[j]);
	    	
	    	 }
	     }
	    for (int k = 0 ; k < n ; k++)
	      for (int i = 0 ; i < n ; i++)	
	    	 for (int j = 0 ; j < n ; j++){
	    		 if (adj[i][k] == 0 || i == j)
	    			 continue;
	    		 if (adj[k][j] == 0)
	    			 continue;
	    		 if (adj[i][j] == 0 || adj[i][j] > adj[i][k] + adj[k][j])
	    			 adj[i][j] = (adj[i][k] + adj[k][j]);
	    		 
	    	 }
	    for (int i = 0 ; i < n ; i++)	{
	    	for (int j = 0 ; j < n ; j++){
	    		out.write((adj[i][j]+" ").getBytes());
	    	}
	    	out.write(("\n").getBytes());
	    }
		 out.flush();
		 out.close();
		 bf.close();
	}
}