Cod sursa(job #273929)

Utilizator robertzelXXX XXX robertzel Data 9 martie 2009 11:09:44
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 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++) {
			m[i][j] = 32000;
		}
	}

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

	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;
}