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

Ar_cher
AFO.||永远的签名:铁肩担道义,妙手著文章。搬运于
2025-08-24 22:40:37,当前版本为作者最后更新于2022-11-15 17:46:53,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
A. 题意分析
对最后一组样例数据进行分析:
先画个草图,蓝色为节点的度。

先拿节点 节点 举例,节点 的度为 ,节点 的度为 。
节点一和二之间是联通的,那么就把这条路径固定下来。然后看这两个节点所连的其他节点有哪些,实际上只需要知道有多少个即可,很显然就是节点的度数减一个。
这里节点 剩下的相连节点只有 ,而 剩下的相连节点有 和 ,写出来路径:
由于双向的,所以又有 和
同样,节点 和节点 的度均为 ,固定 路径,只有 和反过来的
同理,节点 和节点 有 种转发情况。
由于节点 的度为 ,它只有与节点 联通的这一种,题目要求需要转发两次,所以 不能作为中间路径。
B.完善程序
#include<bits/stdc++.h> #define MAXN 10010 #define MAXM 100010 using namespace std; int d[MAXN],u[MAXM],v[MAXM]; int main(){ int n,i,m; long long ans=0; cin>>n>>m; memset(d,0,sizeof(d)); for(i=0;i<m;i++){ scanf("%d%d",&u[i],&v[i]); d[u[i]]++; d[v[i]]++; } for(i=0;i<m;i++){ if(d[u[i]]>1&&d[v[i]]>1) ans+=(d[u[i]]-1)*(d[v[i]]-1)*2; } cout<<ans; return 0; }C.感谢
至高无上的管理员
- 1
信息
- ID
- 5920
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者