1 条题解
-
0
自动搬运
来自洛谷,原作者为

_Luminous
“在坚冰还盖着北海的时候,我看到了怒放的梅花。”搬运于
2025-08-24 22:24:38,当前版本为作者最后更新于2020-10-22 22:53:23,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
· 题意
由题面中:
每两个梦之间都有且仅有一条桥梁直接相连,不会有桥梁从一个梦连向自身。 只能被经过一次,无论是正向经过还是反向经过。 到达一个梦且与它相连的所有桥梁都不能经过可知,题意是让我们删除掉最少的边,使得图中存在欧拉路。
欧拉路的定义:
存在这样一种图,可以从其中一点出发,不重复地走完其所有的边。
如果欧拉路的起点与终点相同,则称之为欧拉回路。
显而易见,欧拉路存在的充要条件如下:
①图是连通的,若不连通不可能一次性遍历所有边。
②对于无向图:有且仅有两个点,与其相连的边数为奇数,其他点相连边数皆为偶数;或所有点皆为偶数边点。对于两个奇数点,一个为起点,一个为终点。起点需要出去,终点需要进入,故其必然与奇数个边相连。
如果存在这样一个欧拉路,其所有的点相连边数都为偶数,那说明它是欧拉回路。
因为此时它的起点即是终点,出去后还会回来,刚好形成偶数边。
③对于有向图:除去起点和终点,所有点的出度与入度相等。起点出度比入度大1,终点入度比出度大1。若起点终点出入度也相同,则为欧拉回路。
欧拉路问题也常被称为一笔画问题。
——以上摘自【朝夕的ACM笔记】图论-欧拉路
· 解题思路 & 方法
其实前面的dalao们已经说得很清楚了,这位大佬写得很好懂
(连我都懂了),我就不赘述了(其实是懒+怕说不好qwq)· Code
#include <iostream> #define ll long long using namespace std; ll t,n;//不开long long见祖宗( int main(){ ios::sync_with_stdio(false); cin>>t; while(t--){ cin>>n; if(n%2) cout<<n*(n-1)/2<<endl; else cout<<n*(n-1)/2-(n-2)/2<<endl; } return 0; }
- 1
信息
- ID
- 5990
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者