結果
問題 |
No.417 チューリップバブル
|
ユーザー |
![]() |
提出日時 | 2025-04-22 16:40:48 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 686 bytes |
コンパイル時間 | 2,246 ms |
コンパイル使用メモリ | 196,524 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-04-22 16:40:53 |
合計ジャッジ時間 | 3,993 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 40 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:19:16: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 19 | freopen("tulip.in","r",stdin); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ main.cpp:20:16: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 20 | freopen("tulip.out","w",stdout); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h> using namespace std; const int N=2005; int m[N][N],a[N],f[N][N],n,t; vector<int> g[N]; void dfs(int u,int fa){ for (auto v:g[u]){ if (v==fa) continue; for(int i=m[u][v]*2;i<=t;i++)f[v][i]+=a[v]; dfs(v,u); for (int j=t;j>=2*m[u][v];j--){ for (int k=0;k<=j;k++) f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]); } } } signed main () { freopen("tulip.in","r",stdin); freopen("tulip.out","w",stdout); cin>>n>>t; for (int i=1;i<=n;i++) cin>>a[i]; int u,v,w; for (int i=1;i<=n-1;i++){ cin>>u>>v>>w; u++; v++; m[u][v]=w; m[v][u]=w; g[u].push_back(v); g[v].push_back(u); } dfs(1,0); cout<<f[1][t]+a[1]<<endl; return 0; }