Cod sursa(job #987429)

Utilizator t.g.g.tt.g.g.t t.g.g.t Data 20 august 2013 17:54:37
Problema Amenzi Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>

using namespace std;
int n,m,k,p,a,b,c,mc[1505][3];
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>>mc[i][0]>>mc[i][1]>>mc[i][2];
    }
    for (int i=1;i<=k;++i)
    {
        in>>a>>b>>c;
        infr[a][b]+=c;
    }
    for (int i=0;i<=154;++i)
        for (int j=0;j<=3504;++j)
        {
            rs[i][j]=-1;
        }
    rs[1][0]=0;
    for (int i=0;i<=3500;++i)
    {
        for (int j=1;j<=m;++j)
        {
            if (mc[j][2]<=i)
            {
                if (rs[mc[j][1]][i-mc[j][2]]>-1)
                    if (rs[mc[j][0]][i]<=rs[mc[j][1]][i-mc[j][2]]+infr[mc[j][0]][i]) rs[mc[j][0]][i]=rs[mc[j][1]][i-mc[j][2]]+infr[mc[j][0]][i];
                if (rs[mc[j][0]][i-mc[j][2]]>-1)
                    if (rs[mc[j][1]][i]<=rs[mc[j][0]][i-mc[j][2]]+infr[mc[j][1]][i]) rs[mc[j][1]][i]=rs[mc[j][0]][i-mc[j][2]]+infr[mc[j][1]][i];
            }
        }
    }
    ofstream out ("amenzi.out");
    for (int i=1;i<=p;++i)
    {
        in>>a>>b;
        out<<rs[a][b]<<"\n";
    }
    in.close();
    out.close();
}