Cod sursa(job #492462)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 14 octombrie 2010 17:20:29
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb

#include<cstdio>
#include<fstream>

using namespace std;

#define nn 101

int m[nn][nn];
int n;

void read (){
	
	ifstream in ("royfloyd.in");
	in>>n;
	for(int i=1;i<=n;++i)
	for(int j=1;j<=n;++j)
	in>>m[i][j];
	in.close ();
	
	}
	
	void solve (){
		
		for(int k=1;k<=n;++k)
		for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
		if(m[i][k] && m[k][j] && (m[i][j] > m[i][k] + m[k][j] || !m[i][j]) && i != j)
		m[i][j] = m[i][k] + m[k][j];
		
		}
		
		void write (){
			
		freopen ("royfloyd.out","w",stdout);
		for(int i=1;i<=n;++i){
			for(int j=1;j<=n;++j)
			printf("%d ",m[i][j]);
			printf("\n");
		}
		
			}
			

int main ()
{
	
	read ();
	solve ();
	write ();
	
	return 0;}