Cod sursa(job #3202390)

Utilizator LilGoatCalin Andrei Cristian LilGoat Data 11 februarie 2024 14:25:03
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
    #include <bits/stdc++.h>
    using namespace std;

    ifstream in("firma.in");
    ofstream out("firma.out");
    vector<int> a[110];
    int c[110][110],s,maxx,p;
    queue<int> q;
    int i,j,k,n,x;
    void parcurgere()
    {
        int d;
        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(k=1;k<=n;k++){
                in>>i>>j>>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++){
            s=0;
            for(j=1;j<=n;j++)
                s+=c[i][j];
            if(maxx>s){
                maxx=s;
                p=i;
            }
        }
        out<<p;
    }