func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, m, s, t, l, rest;   long long d[1010], d2[1010], w[10010];   bool zeredg[10010];   pair<long long, long long> edg[10010];   vector<vector<long long> > edglist;   void dijkstra(long long dist[], bool sec) {     set<pair<long long, long long> > najbl;     dist[s] = 0;     najbl.insert({0, s});     for (long long i = 0; i < n; ++i) {       if (s != i) {         dist[i] = 1e18;         najbl.insert({dist[i], i});       }     }     while (najbl.size()) {       long long v = najbl.begin()->second;       najbl.erase(najbl.begin());       for (auto i : edglist[v]) {         long long u = edg[i].first + edg[i].second - v;         if (sec and dist[u] > dist[v] + w[i] and zeredg[i] and             w[i] < d[u] + rest - dist[v]) {           w[i] = d[u] + rest - dist[v];         }         if (dist[u] > dist[v] + w[i]) {           najbl.erase({dist[u], u});           dist[u] = dist[v] + w[i];           najbl.insert({dist[u], u});         }       }     }   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     cin >> n >> m >> l >> s >> t;     vector<long long> vi;     edglist.resize(n, vi);     for (long long i = 0; i < m; ++i) {       long long u, v, e;       cin >> u >> v >> e;       edglist[u].push_back(i);       edglist[v].push_back(i);       edg[i] = {u, v};       if (e) {         w[i] = e;       } else {         w[i] = 1;         zeredg[i] = 1;       }     }     dijkstra(d, 0);     if (d[t] > l) {       cout <<  NO ;       return 0;     } else if (d[t] == l) {       cout <<  YES n ;       for (long long i = 0; i < m; ++i) {         cout << edg[i].first <<     << edg[i].second <<     << w[i] <<   n ;       }       return 0;     }     rest = l - d[t];     dijkstra(d2, 1);     if (d2[t] != l) {       cout <<  NO n ;       return 0;     }     cout <<  YES n ;     for (long long i = 0; i < m; ++i) {       cout << edg[i].first <<     << edg[i].second <<     << w[i] <<   n ;     }   }   