记录编号 604997 评测结果 AMMMTTTTTT
题目名称 2449.[APIO2009] 抢掠计划 最终得分 10
用户昵称 Gravatar我也不知道 是否通过 未通过
代码语言 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;
}