Cod sursa(job #3260109)

Utilizator BogdanBurescuBogdan Burescu BogdanBurescu Data 30 noiembrie 2024 10:32:08
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
#include <vector>
#include <set>
#include <queue>
#define pii pair<int,int>

using namespace std;

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

long long int t,n,i,j,k,m,x,y,a[105][105],b,c,d[105][105],ok[300005],u,v,w,sum,l,r,mini,nr,maxi,node;
const int MOD=1e9+7;
vector<pair<int,int>>g[300005];
set<pair<int,int>>s;
priority_queue < pii , vector < pii > , greater < pii > > pq;

void royfloyd()
{
    for(i=1; i<=n; i++)
        for(j=1;j<=n;j++)
        {
            if(a[i][j]!=0)
                d[i][j]=a[i][j];
            else
                d[i][j]=1e9;
        }
    for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(d[i][k]!=1e9 && d[k][j]!=1e9)
                d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n;
    for(i=1; i<=n; i++)
        for(j=1;j<=n;j++)
            cin>>a[i][j];

    royfloyd();
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(i==j)
                cout<<0<<' ';
            else
                cout<<d[i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}