Pagini recente » Cod sursa (job #1052948) | Cod sursa (job #1290141) | Cod sursa (job #2484145) | Cod sursa (job #2891825) | Cod sursa (job #942004)
Cod sursa(job #942004)
#include<cstdio>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
bool viz[101];
int v[101];
struct muchie
{
int x;
int c;
};
vector<muchie> l[101];
void bfs(int u)
{
queue<int> q;
vector<muchie>::iterator it;
q.push(u);
while(!q.empty())
{
u=q.front();
viz[u]=0;
for(it=l[u].begin();it!=l[u].end();++it)
if(v[u] + it->c < v[it->x]||v[it->x]==0)
{
v[it->x] = v[u] + it->c;
if(!viz[it->x])
{
q.push(it->x);
viz[it->x] = true;
}
}
q.pop();
}
}
int main()
{
freopen("royfloyd.in","r",stdin);
freopen("royfloyd.out","w",stdout);
int n,i,j;
muchie p;
scanf("%d",&n);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
scanf("%d",&p.c);
p.x=j;
if(p.c!=0)
l[i].push_back(p);
}
for(i=1;i<=n;++i)
{
bfs(i);
for(j=1;j<=n;++j)
if(i!=j)
printf("%d ",v[j]);
else
printf("0 ");
printf("\n");
memset(v,0,sizeof(v));
memset(viz,0,sizeof(viz));
}
return 0;
}