#include using namespace std; using ll = long long; // red, blue bool dfs(ll v, pair sum, vector& seen, vector>& sums, const vector>>& heig){ seen[v] = true; for (auto&& [dest, c]: heig[v]) { auto [cr,cb]{sum}; sums[v] = {cr,cb}; if (c == 0){ ++cr; } else{ ++cb; } if (seen[dest]) { auto [r,b]{sums[dest]}; auto [cr,cb]{sum}; if (cr - r == 1 || cb - b == 1){ return false; } } else { auto r = dfs(dest, {cr,cb}, seen, sums, heig); if (!r){ return false; } } } return true; } int main(){ ll n,m; cin >> n >> m; // dest , colour vector>> heighbors(n,vector>()); for (int i = 0; i < m; ++i) { ll u,v,c; cin >> u >> v >> c; heighbors[u].emplace_back(v,c); heighbors[v].emplace_back(u,c); } vector seen(n, false); vector> sums(n, pair(0,0)); if (dfs(0, {0,0}, seen, sums, heighbors)){ cout << "YES" << endl; } else { cout << "NO" << endl; } return 0; }