Cod sursa(job #3264921)

Utilizator nicushor21Pirlog Marian Nicolae nicushor21 Data 25 decembrie 2024 19:08:12
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int n,i,j,k,dist[105][105],aux[105];
struct muchie{
    int nod,cost;
};
vector <muchie> g[105];
queue <int> q;
void Lee(int x){
    aux[x] = 0;
    q.push(x);
    while(!q.empty()){
        k = q.front();
        q.pop();
        for(auto &it : g[k]){
            if(aux[it.nod] > aux[k]+it.cost){
                aux[it.nod] = aux[k]+it.cost;
                q.push(it.nod);
            }
        }
    }
}
int main()
{
    fin>>n;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            fin>>k;
            if(k){
                g[i].push_back( { j, k } );
            }
        }
    }
    for(i=1;i<=n;i++){
        for(j=0;j<105;j++)  aux[j] = INT_MAX;
        Lee(i);
        for(j=1;j<=n;j++)   dist[i][j] = aux[j];
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            fout<<dist[i][j]<<' ';
        }
        fout<<'\n';
    }
    return 0;
}