예제 #1
0
        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");
            }
        }