示例#1
0
    static long WeightedDiameter(int n, int root, int[][] ues)
    {
        var tree = new WeightedTree(n, root, ues);

        var(mv, md) = (-1, -1L);
        for (int v = 0; v < n; v++)
        {
            var d = tree.Costs[v];
            if (md < d)
            {
                (mv, md) = (v, d);
            }
        }
        return(new WeightedTree(n, mv, tree.Map).Depths.Max());
    }
示例#2
0
    static bool Solve()
    {
        var(n, x) = Read2();
        var es = Array.ConvertAll(new bool[n - 1], _ => Read());

        var map = WeightedTree.ToMap(n + 1, es, false);

        for (int i = 1; i <= n; i++)
        {
            var tree = new WeightedTree(n + 1, i, map);
            if (tree.Costs.Contains(x))
            {
                return(true);
            }
        }

        return(false);
    }