题目链接:
n个定点,m条边,保证在图中没有环的存在,所以在整个图中定点的最大度数为n-1,k为至多被去掉的边,题目要求可以去掉边和添加边,规则如下:
1. 移除至多 K 条边。2. 在保持此图是没有圈的无向简单图的条件下,自由的添加边至此图中。
在给定k的情况下,有两种情况:
1)当k+in[i] >= m时,直接输出n-1即可
2)当k+in[i] < m时,输出的度数需要剪去构成环的情况
in数组存的是各个顶点的度数。
代码如下:
1 #include2 3 using namespace std; 4 typedef long long ll; 5 const int maxn = 200005; 6 int in[maxn]; 7 int n,m,k; 8 9 int main()10 {11 int t;scanf("%d",&t);12 while(t--)13 {14 memset(in,0,sizeof(in));15 int d = -1;16 scanf("%d%d%d",&n,&m,&k);17 for(int i=1;i<=m;i++)18 {19 int a,b;20 scanf("%d%d",&a,&b); //输入数据21 in[a]++;in[b]++; //保存各个点的度数22 }23 int ans = -1;24 for(int i=0;i