Cod sursa(job #3202392)
Utilizator | Data | 11 februarie 2024 14:28:19 | |
---|---|---|---|
Problema | Floyd-Warshall/Roy-Floyd | Scor | 10 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.02 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in("royfloyd.in");
ofstream out("royfloyd.out");
vector<int> a[110];
int v[110][110],c[110][110],s;
queue<int> q;
int i,j,k,n,x;
void parcurgere()
{
int d,s,f;
while(!q.empty()){
d=q.front();
q.pop();
for(auto b:a[d]){
for(k=1;k<=n;k++)
if(c[d][b]>c[k][b]+c[d][k])
c[d][b]=c[k][b]+c[d][k];
}
if(d<n)
q.push(d+1);
}
}
int main()
{
in>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
in>>x;
c[i][j]=x;
a[i].push_back(j);
}
for(i=1;i<=n;i++){
sort(a[i].begin(),a[i].end());
}
q.push(1);
parcurgere();
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
out<<c[i][j]<<" ";
out<<endl;
}
}