Cod sursa(job #837980)

Utilizator RoswenRus Alexandru Roswen Data 18 decembrie 2012 21:28:10
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<vector>
using namespace std;
int n,x;
vector <int> a[105];
int main()
{
	freopen("royfloyd.in","r", stdin);
	freopen("royfloyd.out","w", stdout);
	
	scanf("%d", &n);
	for(int i=0; i<n;i++)
		for(int j=0; j<n;j++)
		{
			scanf("%d ", &x);
			if(x)
				a[i].push_back(x);
			else 
				a[i].push_back(1<<29);
		}
	for(int i=0; i<n;i++)
		a[i][i]=0;
	
	for(int k=0; k<n ;k++)
		for(int i=0; i<n; i++)
			for(int j=0; j<n; j++)
				if(a[i][j] > a[i][k] + a[k][j])
					a[i][j] = a[i][k] + a[k][j];
			
	
	for(int i=0; i<n; i++)
	{
		for(int j=0; j<n;j++)
		{
			if(a[i][j] == 1<<29)
				a[i][j] = 0;
			if(a[i][j] != 1<<29)
				printf("%d ", a[i][j]);	
		}			
			
		printf("\n");
	}
				
	return 0;		
}