Pagini recente » Cod sursa (job #744009) | Cod sursa (job #210075) | Cod sursa (job #2448498) | Cod sursa (job #2479455) | Cod sursa (job #1814960)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
int n;
short t[101][101];
int solve[101][101];
queue <short> c;
/// OTLET: DIJKSTRA N-SZER.
void torol()
{
while(!c.empty())
c.pop();
}
void kiir()
{
}
int main()
{
ifstream be("royfloyd.in");
ofstream ki("royfloyd.out");
be>>n;
for(int i = 1; i <= n;i++)
{
for(int j = 1; j <= n;j++)
{
be>>t[i][j];
solve[i][j] = 2000000000;
}
}
for(int q = 1; q <= n;q++)
{
c.push(q);
solve[q][q] = 0;
while(!c.empty())
{
short now = c.front();
c.pop();
if(now < q)
{
for(int i = 1;i<=n;i++)
{
if(solve[q][now] + solve[now][i] < solve[q][i] and solve[now][i] > 0)
{
solve[q][i] = solve[q][now] + solve[now][i];
}
}
solve[q][q] = 0;
}
else
{
for(int i = 1; i<= n;i++)
{
if(t[now][i] and solve[q][now] + t[now][i] < solve[q][i])
{
solve[q][i] = solve[q][now] + t[now][i];
c.push(i);
}
}
}
}
torol();
}
for(int i = 1; i<= n;i++)
{
for(int j = 1;j <= n;j++)
{
ki<<solve[i][j]<<" ";
}
ki<<endl;
}
//kiir();
return 0;
}