| 记录编号 | 351480 | 评测结果 | AAAAAAAAAA | 
    
        | 题目名称 | 2550.冰桥,升起来了! | 最终得分 | 100 | 
    
        | 用户昵称 |  coolkid | 是否通过 | 通过 | 
    
        | 代码语言 | C++ | 运行时间 | 0.124 s | 
    
        | 提交时间 | 2016-11-16 16:34:29 | 内存使用 | 7.18 MiB | 
    
    
    
    		显示代码纯文本
		
		#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define mp make_pair
#define fi first
#define se second
const int MAXN=300010;
typedef pair<int,int> pii;
pii Index[MAXN];
int StatusA[MAXN],StatusB[MAXN];
int A,B,K;
int QAQ[MAXN],qaq[MAXN];
void init(){
	scanf("%d%d%d",&A,&B,&K);
	for(int i=1;i<=A;i++) scanf("%d",&QAQ[i]);
	for(int i=1;i<=B;i++) scanf("%d",&qaq[i]);
	for(int i=1;i<=K;i++) scanf("%d%d",&Index[i].fi,&Index[i].se);
}
void work(){
	sort(Index+1,Index+1+K);
	for(int i=1;i<=A;i++) StatusA[i]=QAQ[i];
	for(int i=1;i<=B;i++) StatusB[i]=qaq[i];
	for(int i=1;i<=K;i++){
		int a=Index[i].fi,b=Index[i].se;
		int Sa=StatusA[a],Sb=StatusB[b];
		StatusA[a]=max(StatusA[a],Sb+QAQ[a]);
		StatusB[b]=max(StatusB[b],Sa+qaq[b]);
	}
	int ans=0;
	for(int i=1;i<=A;i++) ans=max(ans,StatusA[i]);
	for(int i=1;i<=B;i++) ans=max(ans,StatusB[i]);
	cout<<ans<<endl;
}
int main(){
	freopen("meibridge.in","r",stdin);
	freopen("meibridge.out","w",stdout);
	init();
	work();
	return 0;
}