3 条题解

  • 0
    @ 2025-2-7 20:24:30

    也可反向记录

    #include<bits/stdc++.h>
    using namespace std;
    int yuan[201],f[201],qian[201],n,x,y,k=0,shu;
    bool lu[201][201];
    void pr(int n){
    	if(!n)return;
    	pr(qian[n]);
    	cout<<n<<"-";
    	return; 
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){cin>>yuan[i];f[i]=yuan[i];}
    	do{cin>>x>>y; 
    	lu[y][x]=true;   
        }while(x&&y);
        for(int i=2;i<=n;i++)
           for(int o=1;o<i;o++)
              if(lu[i][o]==1&&yuan[i]+f[o]>f[i]){f[i]=yuan[i]+f[o];qian[i]=o;}
        for(int i=1;i<=n;i++)
    	  if(k<f[i]){k=f[i];shu=i;}
        pr(qian[shu]);
        cout<<shu<<endl<<f[shu];
    	return 0;
    }
    
    

    信息

    ID
    552
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    31
    已通过
    13
    上传者