結果
問題 | No.416 旅行会社 |
ユーザー | 14番 |
提出日時 | 2016-11-14 15:42:58 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 3,929 bytes |
コンパイル時間 | 1,240 ms |
コンパイル使用メモリ | 109,696 KB |
実行使用メモリ | 78,176 KB |
最終ジャッジ日時 | 2024-05-04 13:32:52 |
合計ジャッジ時間 | 13,472 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | TLE | - |
testcase_01 | -- | - |
testcase_02 | -- | - |
testcase_03 | -- | - |
testcase_04 | -- | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; using System.Linq; using System.Text; using System.Collections.Generic; public class Program { public void Proc() { Reader.IsDebug = false; int[] inpt= Reader.ReadLine().Split(' ').Select(a=>int.Parse(a)).ToArray(); this.ShimaCount = inpt[0]; this.BridgeCount = inpt[1]; int eventCount = inpt[2]; for(int i=0;i<BridgeCount; i++) { inpt = Reader.ReadLine().Split(' ').Select(a=>int.Parse(a)).ToArray(); int[][] posList = new int[][] {inpt.OrderBy(a=>a).ToArray(), inpt.OrderByDescending(a=>a).ToArray() }; foreach(int[] pos in posList) { if(!this.BridgeDic.ContainsKey(pos[0])) { this.BridgeDic.Add(pos[0], new Dictionary<int, int>()); } this.BridgeDic[pos[0]][pos[1]] = 0; } } for(int i=0; i<eventCount; i++) { inpt = Reader.ReadLine().Split(' ').Select(a=>int.Parse(a)).ToArray(); this.BridgeDic[inpt[0]][inpt[1]] = i+1; this.BridgeDic[inpt[1]][inpt[0]] = i+1; this.EventList.Add(inpt); } Dictionary<int, int> ShimaGroup = new Dictionary<int, int>(); Dictionary<int, int> GroupRef = new Dictionary<int, int>(); Dictionary<int, int> ans = new Dictionary<int, int>(); for(int i=1; i<=this.ShimaCount; i++) { ans.Add(i, 0); if(ShimaGroup.ContainsKey(i)) { continue; } GroupRef.Add(i, i); if(!BridgeDic.ContainsKey(i)) { continue; } Queue<int> q = new Queue<int>(); q.Enqueue(i); while(q.Count > 0) { int cur = q.Dequeue(); if(ShimaGroup.ContainsKey(cur)) { continue; } if(!BridgeDic.ContainsKey(cur)) { continue; } ShimaGroup.Add(cur, i); this.BridgeDic[cur].Where(a=>a.Value == 0).ToList().ForEach(a=>q.Enqueue(a.Key)); } } ShimaGroup.Where(a=>a.Value == 1).ToList().ForEach(a=>ans[a.Key] = -1); for(int i=EventList.Count-1; i>=0; i--) { int[] grp = EventList[i].Select(a=>ShimaGroup[a]).OrderBy(a=>GroupRef[a]).ToArray(); int ref1 = GroupRef[grp[0]]; int ref2 = GroupRef[grp[1]]; if(ref1 == ref2) { continue; } int[] target = GroupRef.Where(a=>a.Value == ref2).Select(a=>a.Key).ToArray(); target.ToList().ForEach(a=>GroupRef[a] = ref1); int[] targetShima = ShimaGroup.Where(a=>target.Contains(a.Value)).Select(a=>a.Key).ToArray(); if(ref1 == 1) { targetShima.ToList().ForEach(a=>ans[a] = i+1); } } ans.Where(a=>a.Key > 1).ToList().ForEach(a=>Console.WriteLine(a.Value)); } private Dictionary<int, Dictionary<int, int>> BridgeDic = new Dictionary<int, Dictionary<int, int>>(); private List<int[]> EventList = new List<int[]>(); private int ShimaCount; private int BridgeCount; public class Reader { public static bool IsDebug = true; private static System.IO.StringReader SReader; private static string InitText = @" 10 15 11 1 2 1 3 1 6 2 5 2 9 2 10 3 4 4 6 5 7 5 9 6 7 6 9 8 9 8 10 9 10 1 2 1 3 4 6 5 9 9 10 2 5 6 7 8 9 8 10 3 4 2 9 "; public static string ReadLine() { if(IsDebug) { if(SReader == null) { SReader = new System.IO.StringReader(InitText.Trim()); } return SReader.ReadLine(); } else { return Console.ReadLine(); } } } public static void Main(string[] args) { Program prg = new Program(); prg.Proc(); } }