제출 #73392

#제출 시각아이디문제언어결과실행 시간메모리
73392FedericoS여행하는 상인 (APIO17_merchant)C++14
0 / 100
1076 ms1824 KiB
#include <iostream> using namespace std; int INF=1e9; int N,M,K; int x,y; int C[100][1005][2]; int D[105][105]; int P[105][105]; int DP[55][55][55]; int main(){ cin>>N>>M>>K; for(int i=0;i<N;i++) for(int j=0;j<K;j++) cin>>C[i][j][0]>>C[i][j][1]; for(int i=0;i<N;i++) for(int j=0;j<N;j++) D[i][j]=(i==j)?0:INF; for(int i=0;i<M;i++) cin>>x>>y>>D[x-1][y-1]; for(int k=0;k<N;k++) for(int i=0;i<N;i++) for(int j=0;j<N;j++) D[i][j]=min(D[i][j],D[i][k]+D[k][j]); for(int a=0;a<N;a++) for(int b=0;b<N;b++) for(int j=0;j<K;j++) if(C[a][j][0]!=-1 and C[b][j][1]!=-1) P[a][b]=max(P[a][b],C[b][j][1]-C[a][j][0]); /*******************/ for(int k=1;k<N;k++) for(int a=0;a<N;a++) for(int b=0;b<N;b++) DP[a][b][k]=-1; for(int a=0;a<N;a++) for(int b=0;b<N;b++) if(a!=b and D[a][b]==1) DP[a][b][1]=P[a][b]; for(int i=1;i<N;i++) for(int j=1;j<N;j++) for(int a=0;a<N;a++) for(int b=0;b<N;b++) for(int c=0;c<N;c++) if(i+j<N and a!=b and b!=c and a!=c and DP[a][c][i]!=-1 and DP[c][b][j]!=-1) DP[a][b][i+j]=max(DP[a][b][i+j],DP[a][c][i]+DP[c][b][j]); int ans=0; for(int a=0;a<N;a++) for(int b=0;b<N;b++) for(int i=1;i<N;i++) for(int j=1;j<N;j++) ans=max(ans,(DP[a][b][i]+DP[b][a][j])/(i+j)); /* for(int i=1;i<N;i++) ans=max(ans,(P[0][i]+P[i][0])/(D[0][i]+D[i][0])); */ cout<<ans; } /*for(int a=0;a<N;a++) for(int b=0;b<N;b++) cout<<a<<" "<<b<<" "<<P[a][b]<<endl;*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...