Cod sursa(job #1811596)

Utilizator dcutitoiuCutitoiu Adrian-Nicolae dcutitoiu Data 21 noiembrie 2016 13:04:39
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <map>
#include <queue>
#include <set>
#include <string.h>
#include <vector>

using namespace std;

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

int main() {
  // auto &in = cin;
  // auto &out = cout;

  int N;
  in >> N;
  vector<vector<int>> adj(N, vector<int>(N));

  const int &inf = 1000 * 100 + 5;
  for (int i = 0; i < N; i++) {
	for (int j = 0; j < N; j++) {
	  in >> adj[i][j];
	  if (i != j && adj[i][j] == 0)
		adj[i][j] = inf;
	}
  }

  for (int k = 0; k < N; k++)
	  for (int i = 0; i < N; i++)
		  for (int j = 0; j < N; j++)
			  if (adj[i][j] > adj[i][k] + adj[k][j] && i != j)
				  adj[i][j] = adj[i][k] + adj[k][j];

  for (int i = 0; i < N; i++, out << '\n')
	for (int j = 0; j < N; j++)
	  out << adj[i][j] << ' ';

  return 0;
}