1 solutions

  • 0
    @ 2024-4-10 23:00:06

    解法一:

    搜索,每次枚举一组可行的点并染色,找最小组数,可得30分。

    解法二:

    当图为拓扑图时,首先求出图的最长链,由于链上任意两点均不可被同时染色,所以答案不会小于最长链的长度。

    接下来证明答案可以等于最长链长度:利用拓扑图dp,求出f[i]表示以点i为结尾的最长链的长度,将所有点按f[i]的数值分组,即每次同时将f[i]相同的点染色。对于f[x]==f[y]的一对x,y,一定不能从其中一点到达另一点,否则其中一个的f值会更大而不是相等,于是同一组的点一定是两两不可达的。

    可得另外30分。

    解法三:

    当图为一般图时,类似于解法二,将所有强连通分量缩点后形成DAG,求以强连通分量大小为DAG点权的带权最长链,即为答案。

    时间复杂度O(n+m),得分100分。

    具体的分组方法为:假设第i个强连通分量的大小为s[i],以其为结尾的带权最长链长度为f[i],则将其中的s[i]的点分别分到第f[i],f[i]-1,f[i]-2,…,f[i]-s[i]+1组即可。

    • 1

    Information

    ID
    255
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    (None)
    # Submissions
    5
    Accepted
    2
    Uploaded By