1 solutions
-
0
Guest MOD
-
0
解法一:
搜索,每次枚举一组可行的点并染色,找最小组数,可得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