杭电ACM 1224 Free DIY Tour (待解决)

来源:互联网 发布:最新网络金融投资产品 编辑:程序博客网 时间:2024/05/24 07:37


Output Limit Exceeded 

#include <iostream>using namespace std;int map[110][110];int point[110];int dp[110];int dp_max[110];//dp_max[i]表示i-->j中dp[j]最大的数 int next[110];//标记下一步 int main(){int T;cin>>T;for(int c=1;c<=T;c++){int N;cin>>N;memset(dp,0,sizeof(dp));for(int k=0;k<=110;k++)   dp_max[k]=-100;memset(map,0,sizeof(map));memset(point,0,sizeof(point));memset(next,0,sizeof(next));for(int i=1;i<=N;i++)cin>>point[i];int N_map;cin>>N_map;for(int i=1;i<=N_map;i++){int x,y;cin>>x>>y;map[x][y]=1;}dp[N+1]=0;int flag;//标记路径 int i,j;for(i=N;i>=1;i--){flag=-1;//一个循环解决一个dp[i] for(j=i+1;j<=N+1;j++){if(map[i][j]==1){if(dp[j]>dp_max[i]){dp_max[i]=dp[j];flag=j;}dp[i]=point[i]+dp_max[i];}}if(flag>0)next[i]=flag;}cout<<"CASE "<<c<<"#"<<endl;cout<<"points : "<<dp[1]<<endl;cout<<"circuit : ";cout<<"1";int a=1;while(next[a]!=N+1){cout<<"->"<<next[a];a=next[a];}cout<<"->"<<"1"<<endl;if(c!=T) cout<<endl;}return 0;}


原创粉丝点击