#include <bits/stdc++.h>
using
namespace
std;
class
Edge
{
public
:
int
u;
int
v;
int
w;
Edge(
int
u,
int
v,
int
w)
{
this
->u = u;
this
->v = v;
this
->w = w;
}
};
class
GFG{
public
:
bool
*visited;
vector<Edge *> *graph;
GFG(
int
size)
{
visited =
new
bool
[size];
graph =
new
vector<Edge *>[size];
}
void
dfs(
int
S,
int
W)
{
visited[S] =
true
;
for
(Edge *uv : graph[S])
{
int
ver = uv->v;
int
w = uv->w;
if
(!visited[ver] && w < W)
dfs(ver, W);
}
}
};
int
main()
{
int
N = 7;
int
M = 10;
int
U_V[] = {3, 6};
GFG *obj =
new
GFG(8);
Edge *e0 =
new
Edge(1, 2, 5);
Edge *e1 =
new
Edge(1, 4, 3);
Edge *e2 =
new
Edge(1, 5, 12);
Edge *e3 =
new
Edge(1, 6, 5);
Edge *e4 =
new
Edge(4, 5, 1);
Edge *e5 =
new
Edge(5, 6, 2);
Edge *e6 =
new
Edge(5, 3, 1);
Edge *e7 =
new
Edge(3, 6, 16);
Edge *e8 =
new
Edge(4, 7, 1);
Edge *e9 =
new
Edge(2, 4, 1);
obj->graph[1].push_back(e0);
obj->graph[1].push_back(e1);
obj->graph[1].push_back(e2);
obj->graph[1].push_back(e3);
obj->graph[4].push_back(e4);
obj->graph[5].push_back(e5);
obj->graph[5].push_back(e6);
obj->graph[3].push_back(e7);
obj->graph[4].push_back(e8);
obj->graph[2].push_back(e9);
obj->dfs(U_V[0], 16);
if
(obj->visited[U_V[1]])
{
cout <<
"NO"
<< endl;
}
else
{
cout <<
"YES"
<< endl;
}
}