Pagini recente » Cod sursa (job #651702) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2065720) | Cod sursa (job #3323482)
#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});
}
}
}
}
}
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]);
}
}
}
}
//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;
// }
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;
}