Cod sursa(job #1980427)

Utilizator vlcmodanModan Valentin vlcmodan Data 13 mai 2017 00:52:16
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<vector>

#define N 105
using namespace std;

int t;

int a[N][N];

int n;

int change = 0;
void checka(int i, int j, int t)
{
	if (a[i][j] + a[j][t] < a[i][t])
	{
		a[i][t] = (a[i][j] + a[j][t]);
		change = 0;
	}
}
void solve()
{
	change = 0;
	while (change != 1)
	{
		change = 1;
		for (int k = 1; k <= n; k++)
		{
			for (int i = 1; i <= n; i++)
			{
				for (int j = 1; j <= n; j++)
				{
					if(a[i][k]!=0&&a[k][j]!=0)
					if (a[i][j] > a[i][k] + a[k][j])
						a[i][j] = a[i][k] + a[k][j];



				}
			}
		}
	}
}

void display()
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
}
int main()
{
	freopen("royfloyd.in", "r", stdin);
	freopen("royfloyd.out", "w", stdout);

	scanf("%d", &n);

	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			scanf("%d", &a[i][j]);
			
		}
	}

	solve();
	display();

	return 0;
}