Cod sursa(job #273936)

Utilizator robertzelXXX XXX robertzel Data 9 martie 2009 11:17:04
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#define max 101

int m[max][max];
int n,i,j,k;

void citeste () {
	FILE * in = fopen("royfloyd.in", "r");

	fscanf(in, "%d", &n);

	for (i=1; i<=n; i++) {
		for (j=1; j<=n; j++) {
			fscanf(in, "%d", &m[i][j]);
		}
	}

	for (i=1; i<=n; i++) {
		for (j=1; j<=n; j++) {
			if (m[i][j] == 0)
				m[i][j] = 2147483647;
		}
	}

	fclose(in);
}

void scrie () {
	FILE * out = fopen("royfloyd.out", "w");

	for (i=1; i<=n; i++) {
		for (j=1; j<=n; j++) {
			fprintf(out, "%d ", m[i][j]);
		}
		fprintf(out, "\n");
	}
	fclose(out);
}

void rezolva () {
	for (k=1; k<=n; k++) {
		for (i=1; i<=n; i++) {
			for (j=1; j<=n; j++) {
				if ((m[i][j] > (m[i][k] + m[k][j]))) {
					m[i][j] = (m[i][k] + m[k][j]);
				}
			}
		}
	}
}

int main () {
	citeste();
        rezolva();
	scrie();
	return 0;
}