示例#1
0
    public static long Calc(int n)
    {
        n >>= 3;
        long ans   = 0;
        var  graph = new SCCGraph(n);

        for (int i = 0; i < n; i++)
        {
            graph.AddEdge(i, (int)((1000000007L * i) % n));
        }
        ans = graph.SCC().Length;
        return(ans);
    }
示例#2
0
        public override IEnumerable <object> Solve(TextReader inputStream)
        {
            var(nodeCount, edgeCount) = inputStream.ReadValue <int, int>();
            var graph = new SCCGraph(nodeCount);

            for (int i = 0; i < edgeCount; i++)
            {
                var(u, v) = inputStream.ReadValue <int, int>();
                graph.AddEdge(u, v);
            }

            var sccs = graph.SCC();

            yield return(sccs.Count);

            foreach (var scc in sccs)
            {
                yield return($"{scc.Count} {scc.Join(' ')}");
            }
        }