Cod sursa(job #1556794)

Utilizator Rotsching_Cristofor_323CARotsching Cristofor Rotsching_Cristofor_323CA Data 25 decembrie 2015 23:25:21
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
#include <iostream>
#include <stdio.h>
#include <limits.h>
using namespace std;

int N;
int v[100 * 100];
int dist[100 * 100];

void printMatrix (const int * matrix, int v);
void initDist(const int * dist , int len);

int main(){
	
	FILE * inFile = fopen("royfloyd.in" , "r");
	FILE * outFile = fopen("royfloyd.out" , "w+");
	
	fscanf(inFile , "%d\n", &N);
		
	for(int i = 0 ; i < N * N ; ++i){
		int line = i/N;
		int col = i % N;
		fscanf(inFile , "%d" , &v[line * N + col]); 
	}
	
	// printMatrix (v,N);
	// initDist(dist , N);

	
	
	for (int k = 0 ; k < N ; ++k){
		for (int i = 0 ; i < N ; ++i){
			for (int j = 0 ; j < N ; ++j){
				if(v[i * N + j] > v[i * N + k] + v[k * N + j])
					v[i * N + j] = v[i * N + k] + v[k * N + j]; 
			}
		}
	}
	
	
	for(int i = 0 ; i < N * N ; ++i){
		int line = i / N ;
		int col = i % N;
		
		
		if(col == N-1)
			fprintf(outFile , "%d\n" , v[line * N + col]);
		else
			fprintf(outFile , "%d " , v[line * N + col]);
	}
	// printMatrix(v , N);
		
	return 0 ;
}

void printMatrix(const int * matrix, int len){
	for (int i = 0 ; i < len * len; i++){
		int line = i/len ;
		int col = i % len;
		
		cout << matrix [line * len + col] << " ";
		if(col == len - 1)
			cout << "\n" ;
	}
}

void initDist(const int * v , int len){
	int * dist = (int *)v;
	for (int i = 0 ; i < len * len ; ++i){
		int line = i/len;
		int col = i % len;
		dist[line * len + col] = INT_MAX;
	}
}