#54559: dfs+dp


11430533@stu.tshs.tp.edu.tw (一孝20周定樂)


#include <bits/stdc++.h>
#define pii pair<int,int>
using namespace std;

vector<pii> g[26];
int dp[26];
bool vis[26];

int dfs(int u){
    if (vis[u]) return dp[u];
    vis[u] = true;
    dp[u] = 0;
    for (auto [v,w]:g[u]) dp[u] = max(dp[u],dfs(v)+w);
    return dp[u];
}


int main(void){
    ios::sync_with_stdio(0),cin.tie(0);
    
    char start;
    int n;
    while (cin>>start>>n){
        for (int i=0 ; i<26 ; i++){
            g[i].clear();
            vis[i] = 0;
            dp[i] = 0;
        }
        while (n--){
            char a,b;
            int w;
            cin>>a>>b>>w;
            g[a-'A'].push_back({b-'A',w});
        }
        cout<<dfs(start-'A')<<"\n";
    }
}