Pagini recente » Cod sursa (job #1268135) | Cod sursa (job #1944796) | Cod sursa (job #2706757) | Cod sursa (job #2973815) | Cod sursa (job #2651254)
#include <bits/stdc++.h>
#define Nmax 105
#define inf INT_MAX
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int n;
int sol[Nmax][Nmax];
vector < pair < int , int > > v[Nmax];
void afis(){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
g<<sol[i][j]<<' ';
g<<'\n';
}
}
priority_queue < pair < int , int > > pq;
void solve(int line)
{
sol[line][line]=0;
pq.push({0,line});
while(!pq.empty())
{
int nod = pq.top().second;
//cout<<nod;
pq.pop();
for(auto entity : v[nod])
{
int nod_m = entity.first;
int cost = entity.second;
if(sol[line][nod_m] > sol[line][nod] + cost)
{
sol[line][nod_m] = sol[line][nod] + cost;
pq.push({-sol[line][nod_m],nod_m});
}
}
}
}
int main()
{
f>>n;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
int x; f>>x;
if(x)
{
v[i].push_back({j,x});
// v[j].push_back({i,x});
}
sol[i][j]=inf;
}
for(i=1;i<=n;i++)
solve(i);
afis();
return 0;
}