省略
省略
C++に変換後のコードはこちら
int N, M, K, X, Y;
int A[5000], B[5000];
int C[2000], D[2000];
char buf[10];
int dp[2000], nx[2000];
int gain[3];
{
int i, j, k, t, res;
graph g;
rd(N,M,K,X,Y, (A--,B--)(M));
rep(i,N){
rd(buf);
if(buf[0]=='G') C[i] = 0;
if(buf[0]=='C') C[i] = 1;
if(buf[0]=='P') C[i] = 2;
}
rd((D--)(K));
g.setEdge(N,M,A,B);
rep(i,N) dp[i] = -1;
dp[0] = 0;
rep(t,K){
rep(i,N) nx[i] = -1;
rep(i,3){
if( (i-C[D[t]])%%3 == 2 ) gain[i] = X;
if( (i-C[D[t]])%%3 == 0 ) gain[i] = Y;
if( (i-C[D[t]])%%3 == 1 ) gain[i] = 0;
}
rep(i,N) if(dp[i] >= 0) rep(j, g.es[i]){
k = g.edge[i][j];
nx[k] >?= dp[i] + gain[C[k]];
}
rep(i,N) if(dp[i] >= 0) nx[i] >?= dp[i] + gain[C[i]];
rep(i,N) dp[i] = nx[i];
}
res = max(dp(N));
wt(res);
}
Current time: 2024年04月25日00時18分22秒
Last modified: 2019年09月04日00時12分57秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る
Logged in as: unknown user (not login)