Pagini recente » Cod sursa (job #63205) | Cod sursa (job #1827559) | Cod sursa (job #1509893) | Cod sursa (job #2360873) | Cod sursa (job #915366)
Cod sursa(job #915366)
#include<cstdio>
int m,n,i,j,k,d[101],nod;
struct graf
{
int x,c;
graf *y;
}*g[101],*w;
struct point
{
int x;
point *y;
}*p,*u,*q;
inline void intro(int x, int y, int z)
{
graf *p=new graf;
p->x=y;
p->c=k;
p->y=g[x];
g[x]=p;
}
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",&k);
if(k!=0)
intro(i,j,k);
}
for(k=1;k<=n;++k)
{
for(i=1;i<=n;++i)d[i]=-1;
d[k]=0;
p=new point;
p->x=k;
p->y=NULL;
u=p;
while(p!=NULL)
{
nod=p->x;
for(w=g[nod];w!=NULL;w=w->y)
if(d[w->x]>d[nod]+w->c || d[w->x]==-1)
{
d[w->x]=d[nod]+w->c;
q=new point;
q->y=NULL;
q->x=w->x;
u->y=q;
u=q;
}
q=p;
p=p->y;
delete(q);
}
for(i=1;i<=n;++i)
if(d[i]==-1)printf("0 ");
else printf("%d ",d[i]);
printf("\n");
}
return 0;
}