結果

問題 No.3193 Submit Your Solution
ユーザー tobisatis
提出日時 2025-06-27 22:31:56
言語 C#
(.NET 8.0.404)
結果
RE  
実行時間 -
コード長 1,418 bytes
コンパイル時間 19,126 ms
コンパイル使用メモリ 171,964 KB
実行使用メモリ 169,292 KB
最終ジャッジ日時 2025-06-27 22:32:40
合計ジャッジ時間 33,284 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other RE * 3 TLE * 1 -- * 13
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (123 ミリ秒)。
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #

#nullable enable

#region
void O(object? value) { if (value != null) Console.WriteLine(value); }
var _input = Array.Empty<string>();
var _iter = 0;
string String()
{
    while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0);
    return _input[_iter++];
}
T I<T>() where T : IParsable<T> => T.Parse(String(), null);
#endregion

T[] Range<T>(int n, Func<T> F) => Enumerable.Range(0, n).Select(_ => F()).ToArray();
// string Join<T>(IEnumerable<T> values, string? sep = null) => string.Join(sep ?? Environment.NewLine, values);

var n = I<int>();
var ezz = Range(2, () => Range(n - 1, () => (I<int>() - 1, I<int>() - 1)));
var lzz = new List<int>[2][];
for (var lp = 0; lp < 2; lp++)
{
    var ez = ezz[lp];
    var lz = Range(n, () => new List<int>());
    foreach (var (u, v) in ez)
    {
        lz[u].Add(v);
        lz[v].Add(u);
    }
    lzz[lp] = lz;
}

var vns = new long[n];
void F(int s)
{
    var daz = new long[n].AsSpan();
    var dbz = new long[n].AsSpan();
    void S(int v, int prev, Span<long> dz, List<int>[] lz)
    {
        var nd = dz[v] + 1;
        foreach (var next in lz[v]) if (next != prev)
        {
            dz[next] = nd;
            S(next, v, dz, lz);
        }
    }
    S(s, -1, daz, lzz[0]);
    S(s, -1, dbz, lzz[1]);
    var sns = 0L;
    for (var i = 0; i < n; i++) sns += daz[i] * dbz[i];
    vns[s] = sns;
}
Parallel.For(0, n, F);
O(vns.Sum());
0