码迷,mamicode.com
首页 > 其他好文 > 详细

完美网络(优先队列实现)

时间:2014-11-26 18:18:14      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   color   os   sp   for   数据   

完美网络 

Time Limit: 1000MS Memory limit: 65536K

题目描述

完美网络是连通网络的基础上要求去掉网络上任意一条线路,网络仍然是连通网络。求一个连通网络要至少增加多少条边可以成为完美网络。

输入

第一行输入一个数T代表测试数据个数(T<=20)。每个测试数据第一行2个数n,m 分别代表网络基站数和基站间线路数。基站的序号为从1到n。接下来m行两个数代表x,y 代表基站x,y间有一条线路。
(0

输出

对于每个样例输出最少增加多少线路可以成为完美网络。每行输出一个结果。

示例输入

2
3 1
1 2
3 2
1 2
2 3

示例输出

2
1 

完美网络,只有图中每个点的度>=2,此时才能保证任意删去一条边,图还是联通。
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<stdio.h>
 4 #include<string.h>
 5 #include<queue>
 6 using namespace std;
 7 
 8 int n,m;
 9 int dg[10000100];//点的度
10 int main()
11 {
12     int T;
13     scanf("%d",&T);
14     while(T--)
15     {
16         priority_queue<int, vector<int>, greater<int> >que;//定义优先队列
17         memset(dg,0,sizeof(dg));
18         scanf("%d %d", &n,&m);
19         int x,y;
20         for(int i=0;i<m;i++)
21         {
22             scanf("%d%d",&x,&y);
23             dg[x-1]++;//输入一条边,同时使两顶点度加1
24             dg[y-1]++;
25         }
26         sort(dg,dg+n);//排序,从小到大
27 
28         for(int i=0;i<n;i++)
29         {
30             if(dg[i]<2)//把度小于2的点压入优先队列
31                 que.push(dg[i]);
32         }
33         int cnt = 0;//需要加的边数
34         while(que.size()>=2)
35         {
36             int t = 0,f = 0;
37             t = que.top();
38             que.pop();
39 
40             f = que.top();
41             que.pop();
42 
43             ++t;//取出栈顶的两个元素,度分别加1,
44             ++f;
45             cnt++;//这样相当于加了一条边
46             if(t<2)//如果度加完后还是小于2,则下回优先考虑。
47                 que.push(t);             //放入优先队列
48             if(f<2)
49                 que.push(f);
50         }
51         if(!que.empty())//如果执行完上述while循环后,队列还不为空
52         {               //则这种情况只能说明,队列里还剩下一个元素,他的度仍小于2.
53             cnt = cnt + 1;
54         }
55         printf("%d\n", cnt);
56     }
57     return 0;
58 }

 

完美网络(优先队列实现)

标签:des   style   blog   io   color   os   sp   for   数据   

原文地址:http://www.cnblogs.com/6bing/p/4123698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!