Cod sursa(job #995217)

Utilizator ludacrivasilii teodorovici ludacri Data 8 septembrie 2013 01:36:49
Problema Amenzi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
 
using namespace std;
struct nod
{
    int urm,cost;
};
typedef nod muchii1;
nod mc[155][1505];
int n,m,k,p,a,b,c,num[155];
int infr[155][3505],rs[155][3505];
 
int main ()
{
    ifstream in ("amenzi.in");
    in>>n>>m>>k>>p;
    for (int i=1;i<=m;++i)
    {
        in>>a>>b>>c;
        ++num[a]; mc[a][num[a]].urm=b; mc[a][num[a]].cost=c;
        ++num[b]; mc[b][num[b]].urm=a; mc[b][num[b]].cost=c;
    }
    for (int i=1;i<=k;++i)
    {
        in>>a>>b>>c;
        infr[a][b]+=c;
    }
    rs[1][0]=1;
    for (int i=1;i<=3500;++i)
    {
        for (int j=1;j<=n;++j)
        {
            rs[j][i]=rs[j][i-1];
            for (int z=1;z<=num[j];++z)
                if (i>=mc[j][z].cost)
                    if (rs[mc[j][z].urm][i-mc[j][z].cost]>rs[j][i]) rs[j][i]=rs[mc[j][z].urm][i-mc[j][z].cost];
            if (rs[j][i]>0) rs[j][i]+=infr[j][i];
        }
    }
    ofstream out ("amenzi.out");
    for (int i=1;i<=p;++i)
    {
        in>>a>>b;
        out<<rs[a][b]-1<<"\n";
    }
    in.close();
    out.close();
}