#include #include using namespace std; typedef long long int ll; #define UNSEEN 0 #define ZMENSI 1 #define ZVACSI 2 struct Vertex{ int status = UNSEEN; vector susedia; }; int opposite(int status){ return status == ZMENSI ? ZVACSI : ZMENSI; } bool dfs(vector &graph, int v, int newstatus, vector &component) { if (graph[v].status != UNSEEN){ return graph[v].status == newstatus; } component.push_back(v); graph[v].status = newstatus; for (int s: graph[v].susedia) { bool ret = dfs(graph, s, opposite(newstatus), component); if (!ret){ return false; } } return true; } int main(){ int n; cin >> n; vector x(n), y(n), r(n); for (int i=0;i>x[i] >> y[i] >>r[i]; } vector graph(n); for (int i=0; i component; if (dfs(graph, i, ZMENSI, component)){ int sum=0; for (int v: component){ sum += graph[v].status == ZMENSI ? 1 : -1; } if (sum != 0){ result = true; } } } } cout << (result ? "YES\n" : "NO\n"); }