Submission #1607574
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 index = 0; var ans = new int[Q]; var uf = new UnionFind(); uf.Init(N); aby = aby.OrderByDescending(t => t.Item3).ToArray(); vw = vw.OrderByDescending(t => t.Item2).ToArray(); for (int i = 0; i < M;++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 for (int i = 0; i < Q; ++i) Console.WriteLine(ans[i]); } 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 | 100 |
Code Size | 3358 Byte |
Status | AC |
Exec Time | 614 ms |
Memory | 44648 KB |
Judge Result
Set Name | Sample | Subtask1 | All | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 50 / 50 | 50 / 50 | ||||||
Status |
|
|
|
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 | AC | 26 ms | 9300 KB |
sample_02.txt | AC | 26 ms | 11348 KB |
sample_03.txt | AC | 26 ms | 11348 KB |
subtask1_01.txt | AC | 31 ms | 9312 KB |
subtask1_02.txt | AC | 30 ms | 9312 KB |
subtask1_03.txt | AC | 31 ms | 11360 KB |
subtask1_04.txt | AC | 29 ms | 11396 KB |
subtask1_05.txt | AC | 31 ms | 11360 KB |
subtask1_06.txt | AC | 31 ms | 13408 KB |
subtask1_07.txt | AC | 33 ms | 11360 KB |
subtask2_01.txt | AC | 578 ms | 40192 KB |
subtask2_02.txt | AC | 594 ms | 42468 KB |
subtask2_03.txt | AC | 603 ms | 40188 KB |
subtask2_04.txt | AC | 614 ms | 40544 KB |
subtask2_05.txt | AC | 344 ms | 29480 KB |
subtask2_06.txt | AC | 574 ms | 37996 KB |
subtask2_07.txt | AC | 591 ms | 44648 KB |
subtask2_08.txt | AC | 584 ms | 40296 KB |
subtask2_09.txt | AC | 603 ms | 40544 KB |
subtask2_10.txt | AC | 605 ms | 42080 KB |
subtask2_11.txt | AC | 605 ms | 39904 KB |
subtask2_12.txt | AC | 594 ms | 38240 KB |