#include <stdio.h>
#include <limits.h>
#define INF INT_MAX
int N;
int Dist[500];
int Q[500];
int Visited[500];
int Graph[500][500];
void Dijkstra(int b){
int H = 0;
int T = -1;
int j,k;
Dist[b] = 0;
Q[T+1] = b;
T = T+1;
while(T>=H){
j = Q[H];
Visited[j] = 1;
for (k = 0;k < N; k++){
if(!Visited[k] && Dist[k] > Graph[j][k] + Dist[j] && Graph[j][k] != -1){
Dist[k] = Dist[j]+Graph[j][k];
Q[T+1] = k;
T = T+1;
}
}
H = H+1;
}
}
int main(){
int src,target,m;
int a,w,b,i,j;
scanf("%d%d%d%d",&N
,&m
,&src
,&target
);
for(i = 0;i < N;i ++){
for(j = 0;j < N;j++){
Graph[i][j] = -1;
}
}
for(i = 0; i< N; i++){
Dist[i] = INF;
Visited[i] = 0;
}
for(i = 0;i < m; i++){
scanf("%d%d%d",&a
,&b
,&w
); a--;
b--;
Graph[a][b] = w;
Graph[b][a] = w;
}
Dijkstra(src-1);
if(Dist[target-1] == INF){
}else {
printf("YES\n%d",Dist
[target
-1]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KCiNkZWZpbmUgSU5GIElOVF9NQVgKaW50IE47CmludCBEaXN0WzUwMF07CmludCBRWzUwMF07CmludCBWaXNpdGVkWzUwMF07CmludCBHcmFwaFs1MDBdWzUwMF07Cgp2b2lkIERpamtzdHJhKGludCBiKXsKICAgICBpbnQgSCA9IDA7CiAgICAgaW50IFQgPSAtMTsKICAgICBpbnQgaixrOwoKRGlzdFtiXSA9IDA7CgpRW1QrMV0gPSBiOwpUID0gVCsxOwoKd2hpbGUoVD49SCl7CiAgICBqID0gUVtIXTsKICAgIFZpc2l0ZWRbal0gPSAxOwogICAgZm9yIChrID0gMDtrIDwgTjsgaysrKXsKICAgICAgICBpZighVmlzaXRlZFtrXSAmJiBEaXN0W2tdID4gR3JhcGhbal1ba10gKyBEaXN0W2pdICYmIEdyYXBoW2pdW2tdICE9IC0xKXsKICAgICAgICAgICAgRGlzdFtrXSA9IERpc3Rbal0rR3JhcGhbal1ba107CiAgICAgICAgICAgIFFbVCsxXSA9IGs7CiAgICAgICAgICAgIFQgPSBUKzE7CiAgICAgICAgfQogICAgfQoKICAgIEggPSBIKzE7Cn0KfSAgCgppbnQgbWFpbigpewoKaW50IHNyYyx0YXJnZXQsbTsKaW50IGEsdyxiLGksajsKCnNjYW5mKCIlZCVkJWQlZCIsJk4sJm0sJnNyYywmdGFyZ2V0KTsKCmZvcihpID0gMDtpIDwgTjtpICsrKXsKICAgIGZvcihqID0gMDtqIDwgTjtqKyspewogICAgICAgIEdyYXBoW2ldW2pdID0gLTE7CiAgICB9Cn0KCmZvcihpID0gMDsgaTwgTjsgaSsrKXsKICAgIERpc3RbaV0gPSBJTkY7CiAgICBWaXNpdGVkW2ldID0gMDsKfQoKCmZvcihpID0gMDtpIDwgbTsgaSsrKXsKICAgIHNjYW5mKCIlZCVkJWQiLCZhLCZiLCZ3KTsKICAgIGEtLTsKICAgIGItLTsKICAgIEdyYXBoW2FdW2JdID0gdzsKICAgIEdyYXBoW2JdW2FdID0gdzsKfQoKRGlqa3N0cmEoc3JjLTEpOwoKCmlmKERpc3RbdGFyZ2V0LTFdID09IElORil7CiAgICBwcmludGYoIk5PIik7Cn1lbHNlIHsKICAgIHByaW50ZigiWUVTXG4lZCIsRGlzdFt0YXJnZXQtMV0pOwp9CgpyZXR1cm4gMDsKfQ==