比赛 |
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;
}