結果
| 問題 |
No.556 仁義なきサルたち
|
| ユーザー |
Risen
|
| 提出日時 | 2017-08-12 01:01:05 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 97 ms / 2,000 ms |
| コード長 | 1,526 bytes |
| コンパイル時間 | 1,778 ms |
| コンパイル使用メモリ | 107,392 KB |
| 実行使用メモリ | 25,728 KB |
| 最終ジャッジ日時 | 2024-10-12 22:42:59 |
| 合計ジャッジ時間 | 3,808 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
class Solution
{
static void Main()
{
var vals = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
var n = vals[0];
var m = vals[1];
var battles = new int[m][];
for (int i = 0; i < m; i++)
{
battles[i] = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
}
// boss -> 構成員
var team = Enumerable.Range(1, n).ToDictionary(i => i, i => new List<int> { i });
var idToBoss = Enumerable.Range(1, n).ToDictionary(i => i, i => i);
foreach (var battle in battles)
{
var boss = battle.Select(i => idToBoss[i]).ToArray();
var win = boss[0];
var lose = boss[1];
if (win == lose)
{
continue;
}
var counts = Enumerable.Range(0, 2).Select(i => team[boss[i]].Count).ToArray();
if (counts[0] < counts[1])
{
win = boss[1];
lose = boss[0];
}
else if (counts[0] == counts[1] && boss[0] > boss[1])
{
win = boss[1];
lose = boss[0];
}
foreach (var id in team[lose])
{
idToBoss[id] = win;
}
team[win].AddRange(team[lose]);
}
foreach (var kv in idToBoss)
{
Console.WriteLine(kv.Value);
}
}
}
Risen