#include<bits/stdc++.h>
using namespace std;
struct node{
vector<int>v;
int s;
}a[1006];
int n,k,l,m,cnt;
void dfs(int x){
if(a[x].v.size()==0){
cnt=1;
return;
}
if(cnt==1) return;
for(int i=0;i<a[x].v.size()&&cnt!=1;i++){
if(a[a[x].v[i]].s==0) dfs(a[x].v[i]);
if(cnt!=1) a[a[x].v[i]].s--;
}
if(cnt!=1) a[x].s++;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].s;
cin>>k;
for(int i=1;i<=k;i++){
cin>>l>>m;
for(int j=1;j<=m;j++){
int t;
cin>>t;
a[l].v.push_back(t);
}
}
while(cnt!=1) dfs(n);
int z=0;
for(int i=1;i<n;i++) z+=a[i].s;
if(z!=0) a[n].s--;
cout<<a[n].s;
}
本人发现,一旦需要的金属没有配方就会输出-1,求大佬怎么改