Esempio n. 1
0
    public void Solve()
    {
        int N = Reader.Int(), M = Reader.Int();
        var Es   = Reader.IntTable(M);
        var flow = new MinCostFlow(N);

        foreach (var e in Es)
        {
            e[0]--; e[1]--;
            flow.AddEdge(e[0], e[1], 1, e[2]);
            if (e[0] != 0)
            {
                flow.AddEdge(e[1], e[0], 1, e[2]);
            }
        }
        int ans = MinCostFlow.INF;

        for (int a = 1; a < N; a++)
        {
            ans = Math.Min(ans, flow.Run(0, a, 2, ans));
        }
        if (ans == MinCostFlow.INF)
        {
            ans = -1;
        }
        Console.WriteLine(ans);
    }