记录编号 |
604997 |
评测结果 |
AMMMTTTTTT |
题目名称 |
2449.[APIO2009] 抢掠计划 |
最终得分 |
10 |
用户昵称 |
我也不知道 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
13.974 s |
提交时间 |
2025-08-13 12:20:37 |
内存使用 |
72.81 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n,m,d[3001][3001],a[3001],b[3001],s,P,c[3001],num=0,zhi=0;
bool p[3001]={0};
int dfs(int q,int qian){
c[s]=0;
bool shifou,shifou1;
shifou=0;
shifou1=0;
for(int i=1;i<=n;i++) if(d[q][i]==1) shifou=1;
for(int i=1;i<=n;i++) if(c[i]>0) shifou1=1;
if(p[q]==1&&(shifou==0||shifou1==0)){
if(qian==num) zhi++;
num=max(qian,num);
}
for(int i=1;i<=n;i++){
if(d[q][i]==1){
int mmm=c[i];
int nnn=c[i]+qian;
c[i]=0;
dfs(i,nnn);
if(zhi==100) return 0;
c[i]=mmm;
}
}
return 0;
}
int main() {
freopen("atm.in", "r", stdin);
freopen("atm.out", "w", stdout);
cin >> n >>m;
memset(d,0,sizeof(d));
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i];
d[a[i]][b[i]]=1;
}
for(int i=1;i<=n;i++){
cin>>c[i];
}
cin>>s>>P;
for(int i=1;i<=P;i++){
int eee;
cin>>eee;
p[eee]=1;
}
dfs(s,c[s]);
cout<<num;
return 0;
}