版权声明:虽然本蒟蒻很菜,但各位dalao转载请注明出处谢谢。 https://blog.csdn.net/xuxiayang/article/details/86683014
现有一张 点, 条边的无向图,求使得所有点的度数不小于 的最小添加边数(可以重边,但不能自环)
对于60%的数据,
,
表示最终的答案。
对于前100%的数据,
求出所有点需要的度数记为
若有一个点
,满足
,则答案就是
否则答案即为
#include<algorithm>
#include<cstdio>
using namespace std;int n,m,k,x,y,t;
long long ans,sum,ds[100001];
signed main()
{
scanf("%d %d %d",&n,&m,&k);
for(register int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
ds[x]++;ds[y]++;
}
for(register int i=1;i<=n;i++) if(ds[i]<k) sum+=k-ds[i];
for(register int i=1;i<=n;i++) if(k-ds[i]>=sum-k+ds[i]) {ans=(long long)k-ds[i];break;}
if(!ans) ans=(sum+1)>>1;
printf("%lld",ans);
}