# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
586441 | 2022-06-30T09:17:35 Z | M_W | Journey (NOI18_journey) | C++17 | 1 ms | 340 KB |
#include <bits/stdc++.h> #define ii pair<int, int> using namespace std; const int md = 500000001; vector<ii> adj[505]; int dp[505][505]; int main(){ int N, M, H; scanf("%d %d %d", &N, &M, &H); for(int i = 1; i < N; i++){ for(int j = 1, u, w; j <= H; j++){ scanf("%d %d", &u, &w); adj[i].push_back({u + 1, w}); } } for(auto [x, w] : adj[1]) dp[x][min(501, w)]++; for(int i = 2; i <= N; i++){ for(int j = 0; j < M; j++){ if(j > 0) dp[i][j] = min(dp[i][j] + dp[i][j - 1], md); for(auto [x, w] : adj[i]){ dp[x][min(501, j + w)] += dp[i][j]; dp[x][min(501, j + w)] = min(dp[x][min(501, j + w)], md); } // printf(">> %d %d : %d\n", i, j, dp[i][j]); } } for(int i = 0; i < M; i++) printf("%d ", dp[N][i]); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 340 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 340 KB | Output is correct |
3 | Incorrect | 1 ms | 340 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 340 KB | Output is correct |
3 | Incorrect | 1 ms | 340 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |