完美网络

来源:互联网 发布:网络运营商远端无反应 编辑:程序博客网 时间:2024/04/29 17:13

点击打开链接

完美网络

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

输入

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

输出

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

示例输入

23 11 23 21 22 3

示例输出

21 

#include<stdio.h>#include<stdlib.h>#include<bits/stdc++.h>using namespace std;int mp[10010];int main(){    int n,m,i,u,v,p,sum,j;    priority_queue<int ,vector<int> ,greater<int> >S;    scanf("%d",&p);    while(p--)    {        sum=0;        memset(mp,0,sizeof(mp));        scanf("%d %d",&n,&m);        for(i=0;i<m;i++)        {            scanf("%d %d",&u,&v);            mp[u]++;            mp[v]++;        }        for(i=1;i<=n;i++)        {            if(mp[i]<2)                S.push(mp[i]);        }        while(S.size()>1)        {            i=S.top();            i++;            S.pop();            j=S.top();            j++;            S.pop();            sum++;            if(i<2)                S.push(i);            if(j<2)                S.push(j);        }        if(!S.empty())            sum++;        printf("%d\n",sum);    }    return 0;}


0 0