正题
题目大意
给出mmm条边,nnn个点,求至少加入多少条边可以让每个点的度数不超过kkk。不可以有自环,可以有重边
解题思路
计算出每个点还差几条边。
然后如果需要加入多余边(一边是有用的,一边是没用的),那么肯定仅当需求最多的点需求大于其它点的需求
其他情况都是没有的,计算边就好了。
codecodecode
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=100010;
ll n,m,k,wall[N],ans;
int main()
{scanf("%lld%lld%lld",&n,&m,&k);ans=n*k;for(ll i=1;i<=m;i++){ll x,y;scanf("%lld%lld",&x,&y);if(wall[x]<k) ans--;if(wall[y]<k) ans--;wall[x]++;wall[y]++;}sort(wall+1,wall+1+n);if(ans-k+wall[1]<k-wall[1]){printf("%lld",k-wall[1]);return 0;}printf("%lld",ans/2+ans%2);
}