Submission #11620624


Source Code Expand

using AtCoderTypicalContest001.Questions;
using AtCoderTypicalContest001.Extensions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace AtCoderTypicalContest001.Questions
{
    public class QuestionB : AtCoderQuestionBase
    {
        int[] _parents = null;

        public override IEnumerable<object> Solve(TextReader inputStream)
        {
            var nq = inputStream.ReadIntArray();
            var n = nq[0];
            var q = nq[1];
            _parents = InitializeParents(n);

            for (int i = 0; i < q; i++)
            {
                var pab = inputStream.ReadIntArray();
                var p = pab[0];
                var a = pab[1];
                var b = pab[2];

                if (p == 0)
                {
                    Unite(a, b);
                }
                else
                {
                    yield return IsInSameGroup(a, b) ? "Yes" : "No";
                }
            }
        }

        int[] InitializeParents(int n)
        {
            var r = new int[n];
            for (int i = 0; i < r.Length; i++)
            {
                r[i] = i;
            }
            return r;
        }

        void Unite(int x, int y)
        {
            var parentX = _parents[x];
            var parentY = _parents[y];

            if (parentX == parentY)
            {
                return;
            }
            _parents[x] = parentY;
        }

        int FindRoot(int x)
        {
            if (_parents[x] == x)
            {
                return x;
            }
            else
            {
                _parents[x] = FindRoot(_parents[x]);
                return _parents[x];
            }
        }

        bool IsInSameGroup(int x, int y) => FindRoot(x) == FindRoot(y);
    }
}


namespace AtCoderTypicalContest001
{
    class Program
    {
        static void Main(string[] args)
        {
            IAtCoderQuestion question = new QuestionB();    // 問題に合わせて書き換え
            var answers = question.Solve(Console.In);
            foreach (var answer in answers)
            {
                Console.WriteLine(answer);
            }
        }
    }
}

#region Base Classes

namespace AtCoderTypicalContest001.Questions
{

    public interface IAtCoderQuestion
    {
        IEnumerable<object> Solve(string input);
        IEnumerable<object> Solve(TextReader inputStream);
    }

    public abstract class AtCoderQuestionBase : IAtCoderQuestion
    {
        public IEnumerable<object> Solve(string input)
        {
            var stream = new MemoryStream(Encoding.Unicode.GetBytes(input));
            var reader = new StreamReader(stream, Encoding.Unicode);

            return Solve(reader);
        }

        public abstract IEnumerable<object> Solve(TextReader inputStream);
    }

}

#endregion

#region Extensions

namespace AtCoderTypicalContest001.Extensions
{
    internal static class TextReaderExtensions
    {
        internal static int ReadInt(this TextReader reader) => int.Parse(ReadString(reader));
        internal static long ReadLong(this TextReader reader) => long.Parse(ReadString(reader));
        internal static double ReadDouble(this TextReader reader) => double.Parse(ReadString(reader));
        internal static string ReadString(this TextReader reader) => reader.ReadLine();

        internal static int[] ReadIntArray(this TextReader reader, char separator = ' ') => ReadStringArray(reader, separator).Select(int.Parse).ToArray();
        internal static long[] ReadLongArray(this TextReader reader, char separator = ' ') => ReadStringArray(reader, separator).Select(long.Parse).ToArray();
        internal static double[] ReadDoubleArray(this TextReader reader, char separator = ' ') => ReadStringArray(reader, separator).Select(double.Parse).ToArray();
        internal static string[] ReadStringArray(this TextReader reader, char separator = ' ') => reader.ReadLine().Split(separator);
    }
}

#endregion

Submission Info

Submission Time
Task B - Union Find
User terry_u16
Language C# (Mono 4.6.2.0)
Score 0
Code Size 4161 Byte
Status MLE
Exec Time 3923 ms
Memory 280064 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
AC × 1
AC × 18
MLE × 1
Set Name Test Cases
Sample 00_sample_01.txt
All 00_sample_01.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 23 ms 11348 KB
subtask_01_01.txt AC 565 ms 15724 KB
subtask_01_02.txt AC 23 ms 11488 KB
subtask_01_03.txt AC 930 ms 16124 KB
subtask_01_04.txt AC 916 ms 16136 KB
subtask_01_05.txt AC 75 ms 15440 KB
subtask_01_06.txt AC 73 ms 15424 KB
subtask_01_07.txt AC 914 ms 13944 KB
subtask_01_08.txt AC 919 ms 16136 KB
subtask_01_09.txt AC 24 ms 11348 KB
subtask_01_10.txt AC 24 ms 13536 KB
subtask_01_11.txt AC 905 ms 15996 KB
subtask_01_12.txt AC 966 ms 16132 KB
subtask_01_13.txt AC 756 ms 15856 KB
subtask_01_14.txt AC 25 ms 11488 KB
subtask_01_15.txt AC 909 ms 13944 KB
subtask_01_16.txt AC 916 ms 16136 KB
subtask_01_17.txt MLE 3923 ms 280064 KB
subtask_01_18.txt AC 644 ms 15884 KB