Cod sursa(job #971145)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 8 iulie 2013 17:10:50
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <climits>

int main(void)
{
    freopen("royfloyd.in", "r", stdin);
    freopen("royfloyd.out", "w", stdout);
    int nV;
    scanf("%d", &nV);
    int *nArr = new int[nV * nV];
    for(int i(0); i < nV; i++)
    	for(int j(0); j < nV; j++)
    	{
			scanf("%d", &nArr[i * nV + j]);
			if(i == j) nArr[i * nV + j] = 0;
			else if(nArr[i * nV + j] == 0) nArr[i * nV + j] = INT_MAX; 
    	}
	for(int i(0); i < nV; i++)
		for(int j(0); j < nV; j++)
			for(int k(0); k < nV; k++)
				if(nArr[i * nV + j] > nArr[i * nV + k] + nArr[k * nV + j])
					nArr[i * nV + j] = nArr[i * nV + k] + nArr[k * nV + j];
	for(int i(0); i < nV; i++)
	{
		for(int j(0); j < nV; j++)
			printf("%d ", nArr[i * nV + j]);
		printf("%s", "\n");
	}
    return 0;
}