Cod sursa(job #2360186)

Utilizator maria15Maria Dinca maria15 Data 1 martie 2019 14:09:23
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define inf 1000000000

using namespace std;

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

int n, m, q, i, x[302], d[302][302], sol[100001], a, b, c, j, t = 1, k, ind;
vector<pair<int, long long> > v[302];
pair<pair<int, int>, pair<int, int> > qq[100001];

int main(){
    fin>>n>>m>>q;
    for(i=1;i<=n;i++)
        fin>>x[i];
    sort(x+1, x+n+1);
    while(m--){
        fin>>a>>b>>c;
        v[a].push_back({b, c});
        v[b].push_back({a, c});
        d[a][b] = d[b][a] = c;
    }
    for(i=1;i<=q;i++){
        fin>>qq[i].second.first>>qq[i].second.second>>qq[i].first.first;
        qq[i].first.second = i;
    }
    sort(qq+1, qq+q+1);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if(d[i][j] == 0)
                d[i][j] = inf;
    for(k=1;k<=n;k++){
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);

    }
    for(i=1;i<=q;i++){
        if(sol[i] == inf)
            sol[i] = -1;
        fout<<sol[i]<<"\n";
    }
    return 0;
}

/*while(x[k] <= qq[t].first.first){
            ind = qq[t].first.second;
            a = qq[t].second.first;
            b = qq[t].second.second;
            sol[ind] = d[a][b];
            t++;
        }*/