CCCPaste

Untitled

#include 
#include 
#include 
#include 
#include 
using namespace std;
int n, m;
vector >  graph[300005];
int dp[300005];
int rec(int node) {
    if(dp[node] != -1) {
        return dp[node];
    }
    int result = 0;
    for(int i = 0; i < (int) graph[node].size(); i++) {
        int neigh = graph[node][i].first;
        int weight = graph[node][i].second;
        result = max(result, rec(neigh) + weight);
    }
    return dp[node] = result;
}
int main()
{
    cin >> n >> m;
    for(int i = 0; i < m; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        a--; b--;
        graph[a].push_back({b, c});
    }
    memset(dp, -1, sizeof dp);
    cout << rec(0) << endl;
    return 0;
}