Educational Codeforces Round 52 (Rated for Div. 2)B. Vasya and Isolated Vertices

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugarbliss/article/details/83062667

题目链接:http://codeforces.com/contest/1065/problem/B

题意:有一个图(无重边,无自环),有N个点,M条边,问你最多和最少的孤立点有点多少个

思路:对于最少的孤立点。考虑每条边可以连接两个点,所以M条边可以连接2*M条边,N-2*M的结果就是孤立点个数,如果为负数即没有孤立点。对于最多的孤立点,即要使得非孤立的点尽量构成完全图。对于V个点的完全图,边的个数是V*(V-1)/2,所以遍历一遍V即可。找到最小的一个V,则N-V就是最多的孤立点个数。

AC代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, m;

int main()
{
	cin >> n >> m;
	cout << max(n-2*m,0LL) << " ";
	if(m == 0)
    {
        cout << n << endl;
        return 0;
    }
    for(ll i = 1; i <= n; i++)
    {
        if(m <= i*(i-1)/2)
        {
            cout << n-i << endl;
            return 0;
        }
    }
    return 0;
}


 

猜你喜欢

转载自blog.csdn.net/sugarbliss/article/details/83062667