static void Solve() { var data = Console.ReadLine().Split(' '); var n = int.Parse(data[0]); var m = int.Parse(data[1]); for (int j = 1; j <= n; j++) { var logData = Console.ReadLine().Split(' '); sticks[j] = new Stick { TopLeft = new Point() { X = int.Parse(logData[0]), Y = int.Parse(logData[1]) }, BottomRight = new Point() { X = int.Parse(logData[2]), Y = int.Parse(logData[3]) } }; parent[j] = j; rank[j] = 0; for (int p = 1; p < j; p++) { if (!IsSameSet(j, p) && //doIntersect(sticks[j].A, sticks[j].B, sticks[p].A, sticks[p].B)) Intersect(sticks[j], sticks[p])) { Union(j, p); } } } for (int j = 0; j < m; j++) { var queryData = Console.ReadLine().Split(' '); var start = int.Parse(queryData[0]); var end = int.Parse(queryData[1]); output.AppendLine(IsSameSet(start, end) ? "YES" : "NO"); } }