Cod sursa(job #2274592)

Utilizator cezar.plescaCezar Plesca cezar.plesca Data 2 noiembrie 2018 09:49:30
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include <queue>

using namespace std;

int A[100][100];
int D[100][100];

int N;

#define INF 100000

void drumuriminime(){

	for(int i=0;i<N;i++){
		for(int j=0;j<N;j++){
			if(A[i][j]==0 && i!=j)
				D[i][j]=INF;
			else
				D[i][j]=A[i][j];
		}
	}

	for(int k=0;k<N;k++){
		for(int i=0;i<N;i++){
			for(int j=0;j<N;j++){
				if(D[i][j] > (D[i][k] + D[k][j])) 
					D[i][j] = D[i][k] + D[k][j];
			}
		}
	}
}

int main(){
	FILE* f= fopen("royfloyd.in","rt");
	FILE* g= fopen("royfloyd.out","wt");
	
	fscanf(f,"%d",&N);

	for(int i=0;i<N;i++){
		for(int j=0;j<N;j++){
			fscanf(f,"%d", &A[i][j]);
		}
	}

	drumuriminime();

	for(int i=0;i<N;i++){
		for(int j=0;j<N;j++){
			fprintf(g,"%d ",D[i][j]);
		}
		fprintf(g,"\n");
	}

	fclose(g);
	fclose(f);
	return 0;
}