Cod sursa(job #1772691)

Utilizator DobosDobos Paul Dobos Data 6 octombrie 2016 22:36:05
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <bits/stdc++.h>

const int NMAX = 105;

using namespace std;

ifstream fin("coach.in");
ofstream fout("coach.out");

int M[NMAX][NMAX],N[NMAX][NMAX],V[NMAX][NMAX],v[NMAX][NMAX];
int D[NMAX],C[NMAX],P[NMAX];


void Coach(int n,int T){


    for(int o = 1; o <= n; i ++){


        for(int i = o; i <= n; i++)
            for(int j = o; j <= n; j ++)
                for(int k = o; k <= n; k ++){
                    if((M[C[i][C[j]] > M[C[i]][C[k]] + M[C[k]][C[j]]  || M[C[i][C[j]] == 0 ) &&  i != j &&  M[C[i]][C[k]] && M[C[k]][C[j]]){

                        M[C[i][C[j]] = M[C[i]][C[k]] + M[C[k]][C[j]];
                        V[C[i][C[j]] = max(V[C[i]][C[k]],V[C[k]][C[j]]);

                        if(M[C[i][C[j]] == T){
                            fout << C[i] << " " << C[j] << " " << C[i] << " " << C[j];
                            return ;
                        }
                    }

        }


    }

}



int main()
{
    ios :: sync_with_stdio(false);
    fin.tie(NULL);

    int n,m,T,x,y,c,mn,p,aux,mx;

    fin >> n >> m >> T;

    for(int i = 1; i <= n; i++){
        fin >> C[i];
        P[i] = i;
    }
    for(int i  = 1; i <= m; i++){
        fin >> x >> y >> c;
        M[x][y] = N[x][y] = c;
    }

    for(int i = 1; i < n; i ++){
        mn = C[i]; p = i;
        for(int j  = i + 1; j <= n; j ++)
            if(C[j] < mn){
                mn = C[j];
                p = j;
            }

        aux = C[i];
        C[i] = mn;
        C[p] = aux;
        aux = P[i];
        P[i] = p;
        P[p] = aux;

    }

    Coach(n,T);

    return 0;
}