Submission #1607560


Source Code Expand

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
class Simple {
    int N, M;
    Tuple<int, int, int>[] aby;
    int Q;
    Tuple<int, int, int>[] vw;
    void Solve() {
        //input
        N = io.Int;
        M = io.Int;
        aby = new Tuple<int, int, int>[M];
        for (int i = 0; i < M; ++i) {
            int a = io.Int;
            int b = io.Int;
            int y = io.Int;
            aby[i] = Tuple.Create(a, b, y);
        }
        Q = io.Int;
        vw = new Tuple<int, int, int>[Q];
        for (int i = 0; i < Q; ++i) {
            int v = io.Int;
            int w = io.Int;
            vw[i] = Tuple.Create(v, w, i);
        }
        //cal
        var ans = new int[Q];
        aby = aby.OrderByDescending(t => t.Item3).ToArray();
        vw = vw.OrderByDescending(t => t.Item2).ToArray();
        var index = 0;
        var uf = new UnionFind();
        uf.Init(N);
        for (int i = 0; i < Q;++i){
            while(index<Q&&vw[index].Item2>=aby[i].Item3){
                ans[vw[index].Item3] = uf.Size(vw[index].Item1);
                index++;
            }
            uf.Unite(aby[i].Item1,aby[i].Item2);
        }
        while(index<Q){            
            ans[vw[index].Item3] = uf.Size(vw[index].Item1);
            index++;
        }
        //ret
        foreach (var v in ans)
            Console.WriteLine(v);
    }
    SimpleIO io = new SimpleIO();
    public static void Main(string[] args) { new Simple().Stream(); }
    void Stream() {
        Solve();
        io.writeFlush();
    }
}
class UnionFind {
    int[] dat;
    public void Init(int n) {
        dat = new int[n + 1];
        for (int i = 0; i <= n; ++i)
            dat[i] = -1;
    }
    public void Unite(int x, int y) {
        x = Root(x); y = Root(y);
        if (x == y) return;
        if (dat[y] < dat[x]) swap(ref x, ref y);
        dat[x] += dat[y];
        dat[y] = x;
    }
    public bool Find(int x, int y) { return Root(x) == Root(y); }
    public int Root(int x) { return dat[x] < 0 ? x : dat[x] = Root(dat[x]); }
    public int Size(int x) { return -dat[Root(x)]; }
    void swap(ref int a, ref int b) { int tmp = b; b = a; a = tmp; }
}
class SimpleIO {
    string[] nextBuffer;
    int BufferCnt;
    char[] cs = new char[] { ' ' };
    StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
    public SimpleIO() {
        nextBuffer = new string[0];
        BufferCnt = 0;
        Console.SetOut(sw);
    }
    public string Next() {
        if (BufferCnt < nextBuffer.Length)
            return nextBuffer[BufferCnt++];
        string st = Console.ReadLine();
        while (st == "")
            st = Console.ReadLine();
        nextBuffer = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
        BufferCnt = 0;
        return nextBuffer[BufferCnt++];
    }
    public string String => Next();
    public char Char => char.Parse(String);
    public int Int => int.Parse(String);
    public long Long => long.Parse(String);
    public double Double => double.Parse(String);
    public void writeFlush() { Console.Out.Flush(); }
}

Submission Info

Submission Time
Task D - 道路の老朽化対策について
User rui0422
Language C# (Mono 4.6.2.0)
Score 0
Code Size 3348 Byte
Status RE
Exec Time 667 ms
Memory 44524 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 0 / 50 0 / 50
Status
AC × 2
WA × 1
AC × 2
WA × 7
RE × 1
AC × 2
WA × 18
RE × 2
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt
Case Name Status Exec Time Memory
sample_01.txt WA 28 ms 9556 KB
sample_02.txt AC 25 ms 9300 KB
sample_03.txt AC 26 ms 11348 KB
subtask1_01.txt WA 30 ms 11360 KB
subtask1_02.txt WA 31 ms 11360 KB
subtask1_03.txt WA 31 ms 11360 KB
subtask1_04.txt RE 29 ms 10976 KB
subtask1_05.txt WA 31 ms 11360 KB
subtask1_06.txt WA 31 ms 13408 KB
subtask1_07.txt WA 30 ms 9312 KB
subtask2_01.txt WA 667 ms 41828 KB
subtask2_02.txt WA 572 ms 42340 KB
subtask2_03.txt WA 604 ms 37728 KB
subtask2_04.txt WA 598 ms 39776 KB
subtask2_05.txt RE 305 ms 35368 KB
subtask2_06.txt WA 548 ms 44524 KB
subtask2_07.txt WA 578 ms 37992 KB
subtask2_08.txt WA 580 ms 41956 KB
subtask2_09.txt WA 600 ms 42336 KB
subtask2_10.txt WA 608 ms 39648 KB
subtask2_11.txt WA 605 ms 41696 KB
subtask2_12.txt WA 617 ms 41568 KB