Pagini recente » Cod sursa (job #2219309) | Cod sursa (job #2576163) | Cod sursa (job #2545218) | Cod sursa (job #235125) | Cod sursa (job #655427)
Cod sursa(job #655427)
#include<fstream>
#include<vector>
#include<queue>
#define inf 1<<30
using namespace std;
int n,m,i,j,x,y,z,c[101][101];
struct dijks
{
int nod,cost;
};
vector<dijks> a[50001];
queue<int> q;
void dijkstra(int x,int niv)
{
int i;
q.push(x);
while(!q.empty())
{
x=q.front();
for(i=0;i<a[x].size();++i)
if(c[niv][a[x][i].nod]>c[niv][x]+a[x][i].cost)
{
c[niv][a[x][i].nod]=c[niv][x]+a[x][i].cost;
q.push(a[x][i].nod);
}
q.pop();
}
}
int main()
{
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
f>>n;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
c[i][j]=1000000000;
f>>x;
if(x)
a[i].push_back((dijks){j,x});
}
for(i=1;i<=n;++i)
{
c[i][i]=0;
dijkstra(i,i);
}
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
g<<c[i][j]<<" ";
g<<"\n";
}
return 0;
}