Cod sursa(job #2815083)

Utilizator IoanaLiviaPopescu15Ioana Livia IoanaLiviaPopescu15 Data 9 decembrie 2021 05:13:15
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.57 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, a[105][105];

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

void citire()
{
	int i, j;
    fin>>n;
	
	for (i = 1; i <= n; i++)
		for (j = 1; j <= n; j++) 
		    cin>>a[i][j];
	
}
	
 
	
void roy_floyd()
{
	
	int i, j, k;
	for (k = 1; k <= n; k++)
		for (i = 1; i <= n; i++)
			for (j = 1; j <= n; j++)
				if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) a[i][j] = a[i][k] + a[k][j];
	
}
	
 
	
void afis()
	
{
	
	int i, j;
	
	for (i = 1; i <= n; i++) 
	
	{
	
		for (j = 1; j <= n; j++) fout<<a[i][j]<<' ';
	
		fout<<endl;
	
	}
	
}
	
 
	
 
	
int main()
	
{
	
	citire();
	
	roy_floyd();
	
	afis();
	
	return 0;
	
}
	
 
#include <iostream>
#include <fstream>
using namespace std;

int n, a[105][105];

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

void citire()
{
	int i, j;
    fin>>n;
	
	for (i = 1; i <= n; i++)
		for (j = 1; j <= n; j++) 
		    cin>>a[i][j];
	
}
	
 
	
void roy_floyd()
{
	
	int i, j, k;
	for (k = 1; k <= n; k++)
		for (i = 1; i <= n; i++)
			for (j = 1; j <= n; j++)
				if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) a[i][j] = a[i][k] + a[k][j];
	
}
	
 
	
void afis()
	
{
	
	int i, j;
	
	for (i = 1; i <= n; i++) 
	
	{
	
		for (j = 1; j <= n; j++) fout<<a[i][j]<<' ';
	
		fout<<endl;
	
	}
	
}
	
 
	
 
	
int main()
	
{
	
	citire();
	
	roy_floyd();
	
	afis();
	
	return 0;
	
}