比赛 2008haoi模拟训练1 评测结果 ATTTTTTTTT
题目名称 最大获利 最终得分 10
用户昵称 BYVoid 运行时间 9.001 s
代码语言 C++ 内存使用 14.85 MiB
提交时间 2008-04-22 11:23:52
显示代码纯文本
#include <iostream>
#include <fstream>
#define MAXN 5001
#define MAXM 50001


using namespace std;

typedef struct
{
	long u1,u2,v;
}users;

ifstream fi("profit.in");
ofstream fo("profit.out");

long N,M,maxf;
long P[MAXN];
bool use[MAXN];
users U[MAXM];

void init()
{
	long i;
	fi >> N >> M;
	for (i=1;i<=N;i++)
		fi >> P[i];
	for (i=1;i<=M;i++)
		fi >> U[i].u1 >> U[i].u2 >> U[i].v;
}

long getpro()
{
	long i,p=0;
	for (i=1;i<=M;i++)
	{
		if (use[U[i].u1] && use[U[i].u2])
		{
			p+=U[i].v;
		}
	}
	return p;
}

void search(int k,long cost)
{
	if (k==N+1)
	{
		long fit,pro;
		pro=getpro();
		fit=pro-cost;
		if (fit>maxf)
			maxf=fit;
		return;
	}
	use[k]=true;
	search(k+1,cost+P[k]);
	use[k]=false;
	search(k+1,cost);
}

void print()
{
	fo << maxf;
	fi.close();
	fo.close();
}

int main()
{
	init();
	search(1,0);
	print();
	return 0;
}