Cod sursa(job #3323485)

Utilizator anto_vscAntonia Voinescu anto_vsc Data 18 noiembrie 2025 13:16:56
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.27 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
#include <functional>
#include <utility>
#include <climits>
using namespace std;

struct Muchie{
    int s;
    int d;
    int cost;
};

vector<Muchie> muchii;
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
int dist[50001];
bool vis[50001];


int d[50001][50001];


// void dijkstra(int n, int m){
//     while(!pq.empty()){
//         int nod=pq.top().second;

//         pq.pop();

//         if(vis[nod]==1){
//             continue;
//         }

//         vis[nod]=1;
//         for(int i=0; i<m; i++){
//             if(muchii[i].s == nod){
//                 int vecin = muchii[i].d;
//                 int cost=muchii[i].cost;
//                 if(dist[vecin]>dist[nod]+cost){
//                     dist[vecin]=dist[nod]+cost;
//                     pq.push({dist[vecin], vecin});
//                 }
//             }
//         }
//     }

// }


//cu lista de adiacenta
//dijsktra
// int main(){


//     ifstream cin("dijkstra.in");
//     ofstream cout("dijkstra.out");

//     int n;
//     cin>>n;
//     int m;
//     cin>>m;

//     for(int i=1; i<=n; i++){
//         dist[i]=INT_MAX;
//     }

//     dist[1]=0;

//     pq.push({dist[1], 1});

//     for(int i=0; i<m; i++){
//         int x,y,c;
//         cin>>x>>y>>c;
//         muchii.push_back(Muchie{x,y,c});
//     }

//     dijkstra(n,m);

//     for(int i=2; i<=n; i++){
//         if(dist[i]==INT_MAX){
//             dist[i]=0;
//         }
//         cout<<dist[i]<<" ";
//     }

//     return 0;
// }


void roy_floyd(int n){
    for(int k=0; k<n; k++){
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                d[i][j]=min(d[i][j], d[i][k] + d[k][j]);
            }
        }
    }
}


int main(){

    ifstream cin("royfloyd.in");
    ofstream cout("royfloyd.out");

    int n;
    cin>>n;

    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            cin>>d[i][j];
        }
    }

    roy_floyd(n);

    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            cout<<d[i][j]<<" ";
        }
        cout<<'\n';
    }

    return 0;
}