大家好,我是ЭНТДЖЕЙ,今天是我2026年第十四次正式发题解!
2026年发布的题解!
能不能点个赞
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先简化题意:
* 蛮抽象的,而且题目很绕:
* 1.按照原图GGG连接uiu_iui 和viv_ivi 的一条边,在L(G)L(G)L(G)里创建一个点——D(ui,vi)D(u_i,v_i)D(ui ,vi )
* 2.遍历L(G)L(G)L(G)里的所有点(两两遍历),设遍历的两个点分别为D(ui,vi)D(u_i,v_i)D(ui ,vi )和D(uj,vj)D(u_j,v_j)D(uj ,vj ),如果(ui==uj∣∣ui==vj∣∣vi==uj∣∣vi==vj)(u_i == u_j || u_i == v_j || v_i == u_j || v_i == v_j)(ui ==uj ∣∣ui ==vj ∣∣vi ==uj ∣∣vi ==vj )那么在L(G)L(G)L(G)中D(ui,vi)D(u_i,v_i)D(ui ,vi )和D(uj,vj)D(u_j,v_j)D(uj ,vj
)中连接一条线
* 3.求L(G)L(G)L(G)中一共有多少条线
然后就是写代码
* 处理输入(READ):
* 正常输入
* 核心部分(PROCESS):
* 其实看到题目并理解后,我的的第一反应都是暴力枚举所有点,寻找L(G)L(G)L(G)中包含相同GGG的点的两个点,然后ans++,但是会爆掉。
* 自己编了一个样例,画图来解释比较清楚:
画出来的GGG以及L(G)L(G)L(G)长这样:
* 分别求不同颜色的边:
* 先看红色:
可以看到红色的边是代表共同拥有1的点
* 再仔细观察:
* Q:一共有多少个有1的点? A:4个
* Q:那跟求线的个数有什么关系呢?A:4-1 + 4-2 + 4-3 + 4-4 = 4-1 + (4-1)-1 + ((4-1)-1)-1 + (((4 -1)-1)-1)-1 看得出来每一个加数都是前一个加数-1,所以我们可以用cnt数组计算L(G)L(G)L(G)中有多少个包含相同GGG中的点的点,然后利用前面的求线的个数的方式算出个数
* 其他的颜色同红色
* 最后输出(WRITE):
* 输出L(G)L(G)L(G)中线的个数
其实有点抽象,还很绕,而且我太挫了,讲不来
完整代码:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
🎉完结撒花🎉
怎么感觉这篇这么长嘞?