比赛 20160415 评测结果 WWWWWWWWWW
题目名称 能量网络 最终得分 0
用户昵称 sro dydxh orz 运行时间 0.071 s
代码语言 C++ 内存使用 0.90 MiB
提交时间 2016-04-15 11:46:20
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
struct edge{
	int y,next,v;
}e[50010];int lin[1010],len;
int n,m,in[1010];
void insert(int a,int b){
	e[++len].next=lin[a];
	lin[a]=len;
	e[len].y=b;
}
struct nod{
	int a,b;
}p[1010];
bool mycmp(nod a,nod b){return a.a<b.a;}
int main(){
	freopen("energynet.in","r",stdin);
	freopen("energynet.out","w",stdout);
	scanf("%d%d",&n,&m);
	int ans=0;
	for(int i=1;i<=n;i++)	scanf("%d",&p[i].a);
	for(int i=1;i<=n;i++)	scanf("%d",&p[i].b);
	for(int i=1;i<=m;i++){
		int a,b;
		scanf("%d%d",&a,&b);
		in[b]++;
		insert(a,b);
	}
	for(int i=1;i<=n;i++){
		int maxn=-1,temp=0;
		for(int j=lin[i];j;j=e[j].next){
			int yy=e[j].y;
			maxn=max(maxn,p[yy].a);
			temp=yy;
		}
		if(in[temp]*p[temp].a>=p[temp].b){
			ans+=p[temp].b;
			p[temp].a=0;
		}
		else ans+=p[temp].a;
		
	}
	cout<<ans<<endl;
	return 0;
}