Cod sursa(job #536168)

Utilizator KosmynC64Munteanu Cosmin KosmynC64 Data 18 februarie 2011 12:38:05
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<limits.h>
#define INF 1001
using namespace std;
int minim(int a,int b){
if(a<b)return a;
return b;}
int main(){
	int n,d;
	vector< vector<int> > graf;
	ifstream f("royfloyd.in");
	f>>n;
	graf.resize(n);
	for(int i=0;i<n;i++)graf[i].resize(n);
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++){
	f>>d;
	if(i!=j&&d==0)graf[i][j]=INF;
	else graf[i][j]=d;}
	f.close();
	
	for(int i=0;i<n;i++){
	for(int j=0;j<n;j++)
	cout<<graf[i][j]<<' ';cout<<endl;}
	
	for(int k=0;k<n;k++)
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++)
	if(graf[i][j]==INF)graf[i][j]=INF;
	else graf[i][j]=minim(graf[i][j],graf[i][k]+graf[k][j]);
	
	ofstream g("royfloyd.out");
	for(int i=0;i<n;i++){
	for(int j=0;j<n;j++)
	if(graf[i][j]==INF)g<<"0 ";
	else g<<graf[i][j]<<' ';g<<endl;}
	g.close();
return 0;}