func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 998244353;   const int N = 100005;   const double PI = 4 * atan(1);   const double eps = 1e-7;   const long long oo = 1e18;   const int AlPHA = 26, B = 30;   long long n, m, L, sr, t;   long long adj[1005][1005];   long long yes[1005][1005];   long long dist[1005];   vector<long long> ad[N];   bool vis[1005];   vector<pair<long long, long long> > v;   void dijkstra(long long src) {     set<pair<long long, long long> > ss;     pair<long long, long long> ras;     for (int i = 0; i < n; i++) {       dist[i] = 1e17;       vis[i] = 0;     }     dist[src] = 0;     ss.insert(make_pair(0, src));     while (!ss.empty()) {       ras = *(ss.begin());       ss.erase(ss.begin());       src = ras.second;       long long w = ras.first;       if (vis[src]) continue;       vis[src] = 1;       for (auto u : ad[src]) {         if (dist[u] > w + adj[src][u]) {           dist[u] = w + adj[src][u];           ss.insert(make_pair(dist[u], u));         }       }     }   }   int main() {     ios::sync_with_stdio(0);     cin >> n >> m >> L >> sr >> t;     for (int i = 0; i < m; i++) {       long long x, y, z;       cin >> x >> y >> z;       ad[x].push_back(y);       ad[y].push_back(x);       if (z > 0) {         adj[x][y] = adj[y][x] = z;       } else {         adj[x][y] = adj[y][x] = 1;         yes[x][y] = yes[y][x] = 1;         v.push_back(make_pair(x, y));       }     }     dijkstra(sr);     long long x = dist[t];     long long i = 0;     while (i < v.size() && x < L) {       long long y = L - x + 1;       adj[v[i].first][v[i].second] = adj[v[i].second][v[i].first] = y;       dijkstra(sr);       x = dist[t];       i++;     }     if (x != L) {       cout <<  NO ;       return 0;     } else {       cout <<  YES n ;       for (int i = 0; i < n; i++) {         for (int j = i + 1; j < n; j++) {           if (adj[i][j]) cout << i <<     << j <<     << adj[i][j] <<   n ;         }       }     }     return 0;   }   