Cod sursa(job #778974)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 16 august 2012 13:42:54
Problema Amenzi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<vector>
#include<cstring>
#define nmax 156
#define tmax 3600
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector< pair<int,int > > G[nmax];
int x,y,c,i,j,n,m,k,p,T[tmax][nmax],A[tmax][nmax],Tmax,b,a;
inline int max(int a,int b){
	if(a<b)
		return b;
	return a;
}
int main () {
	
	f>>n>>m>>k>>p;
	
	
	for(i=1;i<=m;i++){
		f>>x>>y>>c;
		G[x].push_back(make_pair(y,c));
		G[y].push_back(make_pair(x,c));
	}
	
	for(i=1;i<=k;++i){
		f>>a>>b>>c;
		T[b][a]+=c;
	}
	
	
	for(i=2;i<=n;++i)
		A[0][i]=-1;
	Tmax=tmax;
	for(i=1;i<=Tmax;++i) {
		
		for(j=1; j<=n; ++j  ) {
			
			A[i][j]=A[i-1][j];
			for(int k=0; k<G[j].size() ;++k){
				int tt=G[j][k].second;
				if(i-tt>=0)
					A[i][j]=max(A[i][j] ,A[i-tt][G[j][k].first]);
				
			}
			
			if(A[i][j]!=-1 )
				A[i][j]+=T[i][j];
		}
		
	}
	
	for(i=1;i<=p;++i){
		f>>a>>b;
		g<<A[b][a]<<"\n";
	}
	
	return 0;
}