完美网络
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
完美网络是连通网络的基础上要求去掉网络上任意一条线路,网络仍然是连通网络。求一个连通网络要至少增加多少条边可以成为完美网络。
Input
第一行输入一个数T代表测试数据个数(T<=20)。每个测试数据第一行2个数n,m 分别代表网络基站数和基站间线路数。基站的序号为从1到n。接下来m行两个数代表x,y 代表基站x,y间有一条线路。
(0 < n < m < 10000)
Output
对于每个样例输出最少增加多少线路可以成为完美网络。每行输出一个结果。
Sample Input
2 3 1 1 2 3 2 1 2 2 3
Sample Output
2 1
提示:本题就是问你最少加多少条路能让这条路变成欧拉回路,而形成欧拉回路的必要条件是每个点的度数大于等于2,所以让你找最少要加几条边能让每个点度数大于等于2。
代码实现如下(g++):
#include<bits/stdc++.h> using namespace std; int d[10010]; int main() { int t,m,n,u,v,i; scanf("%d",&t); while(t--) { int sum=0; memset(d,0,sizeof(d)); scanf("%d %d",&n,&m); for(i=0;i<m;i++) { scanf("%d %d",&u,&v); d[u]++; d[v]++; } for(i=1;i<=n;i++) { if(d[i]<=1) sum++; } cout<<(sum+1)/2<<endl; } return 0; } /*************************************************** Result: Accepted Take time: 16ms Take Memory: 236KB ****************************************************/