Pagini recente » Cod sursa (job #2401283) | Cod sursa (job #2311521) | Cod sursa (job #1614841) | Cod sursa (job #665634) | Cod sursa (job #623904)
Cod sursa(job #623904)
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
int i,j,n,m,c[101][101],p1;
queue<int> q;
vector<int> a[101];
vector<int> b[101];
void det(int t)
{
int i,x;
q.push(t);
c[t][t]=0;
while(!q.empty())
{
x=q.front();
for(i=0;i<a[x].size();++i)
if(c[t][a[x][i]]>c[t][x]+b[x][i])
c[t][a[x][i]]=c[t][x]+b[x][i],q.push(a[x][i]);
q.pop();
}
}
int main()
{
freopen("royfloyd.in","r",stdin);
freopen("royfloyd.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&p1);
if(i!=j)
{
a[i].push_back(j);
if(!p1)
p1=100000;
b[i].push_back(p1);
c[i][j]=100000;
}
}
for(i=1;i<=n;i++)
det(i);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
if(c[i][j]==100000)
printf("0 ");
else
printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}