#include using namespace std; using ll = long long; using ull = unsigned long long; ll MOD = 1'000'000'007; int last = 0; void dfs(int i, vector &vis, vector> &g, int &cb, int &cr, int n) { vis[i] = true; for (int j = 0; j < n; j++) { if (!vis[j] && g[i][j] != -1) { if (g[i][j] == 1) cb++; else if (g[i][j] == 0) cr++; dfs(j, vis, g, cb, cr, n); } last = j; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector> g(n); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { g[i].push_back(-1); } } for (int i = 0; i < m; i++) { int u, v, c; cin >> u >> v >> c; g[u][v] = c; g[v][u] = c; } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) cout << g[i][j] << " "; cout << '\n'; } vector vis(n, false); for (int i = 0; i < n; i++) { if (!vis[i]) { int cr = 0; int cb = 0; dfs(i, vis, g, cb, cr, n); for (int i = 0; i < n; i++) cout << vis[i] << " "; cout << '\n'; cout << last << '\n'; if (g[i][last] == 1) cb++; else if (g[i][last] == 0) cr++; cout << cb << " " << cr << "\n"; if (cb == 1 && cr > 0) { cout << "NO"; return 0; } else if (cr == 1 && cb > 0) { cout << "NO"; return 0; } } } cout << "YES"; return 0; }