完美网络
来源:互联网 发布:淘宝店客服兼职 编辑:程序博客网 时间:2024/04/29 19:25
题目描述
完美网络是连通网络的基础上要求去掉网络上任意一条线路,网络仍然是连通网络。求一个连通网络要至少增加多少条边可以成为完美网络。
输入
第一行输入一个数T代表测试数据个数(T<=20)。每个测试数据第一行2个数n,m 分别代表网络基站数和基站间线路数。基站的序号为从1到n。接下来m行两个数代表x,y 代表基站x,y间有一条线路。
(0 < n < m < 10000)
输出
对于每个样例输出最少增加多少线路可以成为完美网络。每行输出一个结果。
示例输入
23 11 23 21 22 3
示例输出
21
提示
话说这道题,在学DFS和BFS的时候出现,真的是……
我还曾经想了挺久怎么做呢!原来用优先队列最简单粗暴!!
#include<iostream>#include<cstring>#include<cstdlib>#include<queue>#include<algorithm>#include<cstdio>int n,m,x,y;using namespace std;struct cmp{ bool operator()(const int &a,const int &b) { return a>b; }};int vis[10086];int main(){ int t; cin>>t; while(t--) { priority_queue<int,vector<int>,cmp> q; memset(vis,0,sizeof(vis)); cin>>n>>m; for(int i=0;i<m;i++) { cin>>x>>y; vis[x]++; vis[y]++; } sort(vis+1,vis+1+n); for(int i=1;i<=n;i++) { if(vis[i]<2) q.push(vis[i]); else break; } int num=0; while(q.size()>=2) { int a=q.top(); q.pop(); int b=q.top(); q.pop(); a++; b++; num++; if(a<2) q.push(a); if(b<2) q.push(b); } if(!q.empty()) { num++; } printf("%d\n",num); } return 0;}<span style="color:#7ca9ed;"></span>
0 0
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 完美网络
- 系统如何将一个信号通知到进程
- C++11学习之const限定符
- NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)
- 《数据结构之链表栈》
- 树-堆结构练习——合并果子之哈夫曼树
- 完美网络
- HttpURLConnection实现多线程网络下载
- Java中泛型的本质
- BZOJ 1059 二分图匹配
- C# 将图片的base64编码保存到Oracle数据库中
- 如何正确(完美)卸载Java/JDK/JRE
- iOS使用Charles(青花瓷)抓包并篡改返回数据图文详解
- 亿级Web系统的容错性建设实践
- spring 事件机制