Cod sursa(job #783988)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 4 septembrie 2012 16:54:47
Problema Amenzi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;
vector <pair<int,int> > v[160];
int m,n,k,amenzi[3512][162],x,y,z,a[3512][162],q;
int main(void)
{
	fstream f,g;
	f.open("amenzi.in",ios::in);
	g.open("amenzi.out",ios::out);
	f>>n>>m>>k>>q;
	int i;
	for (i=1;i<=m;i++)
	{
		f>>x>>y>>z;
		v[x].push_back(make_pair(y,z));
		v[y].push_back(make_pair(x,z));
	}
	for (i=1;i<=k;i++)
	{
		f>>x>>y>>z;
		amenzi[y][x]+=z;
	}
	int p,prec,cost,j;
	for (i=0;i<=3511;i++)
		for (j=0;j<=n;j++)
			a[i][j]=-1;
	a[0][1]=amenzi[0][1];
	for (i=1;i<=3506;i++)
		for (j=1;j<=n;j++)
		{
			for (p=0;p<v[j].size();p++)
			{
				prec=v[j][p].first;
				cost=v[j][p].second;
				if (i>=cost)
					a[i][j]=max(a[i][j],a[i-cost][prec]);
			}
			a[i][j]=max(a[i-1][j],a[i][j]);
			if (a[i][j]!=-1)
			a[i][j]+=amenzi[i][j];
		}
	for (i=1;i<=q;i++)
	{
		f>>x>>y;
		g<<a[y][x]<<"\n";
	}
	
}