Pagini recente » Cod sursa (job #97753) | Cod sursa (job #572199) | Cod sursa (job #1763823) | Cod sursa (job #800994) | Cod sursa (job #1841109)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int n,m,i,d[105][105],x,g[105],c,j;
struct nod{int nd,val;}p;
vector <nod>v[105];
queue <int>C;
int main()
{fin>>n;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
{fin>>x;
p.nd=j;
p.val=x;
if(i!=j&&p.val!=0){v[i].push_back(p);g[i]++;}
}
}
//for(i=1;i<=n;i++)
// for(j=0;j<n;j++)
// fout<<v[i][j].val<<" ";
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
d[i][j]=1000000000;
d[i][i]=0;
}
for(j=1;j<=n;j++)
{C.push(j);
while(C.size()>0)
{c=C.front();
C.pop();
for(i=0;i<g[c];i++)
{if(v[c][i].val+d[j][c]<d[j][v[c][i].nd]){d[j][v[c][i].nd]=v[c][i].val+d[j][c];
C.push(v[c][i].nd);
}
}
}
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
{if(d[i][j]==1000000000)fout<<"0 ";
fout<<d[i][j]<<" ";
}
fout<<"\n";
}
}