Pagini recente » Rating Pintilie Danut Sebastian (DANUTSEBASTIAN) | Cod sursa (job #1009281) | Cod sursa (job #874230) | Cod sursa (job #1565301) | Cod sursa (job #3202393)
#include <bits/stdc++.h>
using namespace std;
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");
vector<int> a[110];
int v[110][110],c[110][110],s;
queue<int> q;
int i,j,k,n,x;
void parcurgere()
{
int d,s,f;
while(!q.empty()){
d=q.front();
q.pop();
for(auto b:a[d]){
for(k=1;k<=n;k++)
if(c[d][b]>c[k][b]+c[d][k])
c[d][b]=c[k][b]+c[d][k];
}
if(d<n)
q.push(d+1);
}
}
int main()
{
in>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
in>>x;
c[i][j]=x;
a[i].push_back(j);
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j&&c[i][j]==0)
c[i][j]=INT_MAX;
for(i=1;i<=n;i++){
sort(a[i].begin(),a[i].end());
}
q.push(1);
parcurgere();
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
out<<c[i][j]<<" ";
out<<endl;
}
}