4 条题解

  • 1
    @ 2025-8-1 9:46:37
    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<bits/stdc++.h> 
    using namespace std;
    const int N=1e4+1314;
    int a[N],dp[N];
    int n,x,y;
    bool flag;
    int fa[N];
    int id,maxx;
    bool v[N][N];
    void f(int x){
    	if(fa[x])  f(fa[x]);
    	if(flag) cout<<'-';
    	else flag=1;
    	cout<<x;
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    		dp[i]=a[i];
    	}
    	while(cin>>x>>y){
    		if(x==0&&y==0)break;
    			v[x][y]=1;
    		}
    		for(int i=1;i<=n;i++){
    			for(int j=1;j<i;j++)
    				if(v[j][i]&&dp[i]<dp[j]+a[i]){
    					dp[i]=dp[j]+a[i];
    					fa[i]=j;
    				}
    				if(maxx<dp[i]){
    					maxx=dp[i];
    					id=i;
    				}
    		}
    		f(id);
    	cout<<endl<<maxx;
    	return 0;
    }
    //说好的幸福呢
    
    

    信息

    ID
    2965
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    214
    已通过
    74
    上传者