由于数据很弱(20组数据,每组1000个点,2000条边),于是直接暴力解决了。
每次选择度数最大的点,然后用一滴圣水即可。
(呜呜怪不得从来没见过魔法阵呢!)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int N = 2005;
vector<int> g[N];
int d[N];
int t, n, m;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	
	cin >> t;
    while(t --)
    {
        cin >> n >> m;
        for(int i = 0; i <= 1005; i ++)
        {
            g[i].clear();
            d[i] = 0;
        }
        while(m --)
        {
            int u, v;
            cin >> u >> v;
            g[u].push_back(v);
            g[v].push_back(u);
            d[u] ++;
            d[v] ++;
        }
        int ans = 0;
        while(ans <= 11)
        {
            int maxx = 0, idx;
            for(int i = 1; i <= n; i ++)
            {
                if(d[i] > maxx)
                {
                    maxx = d[i];
                    idx = i;
                }
            }
            if(maxx == 0)
            {
                break;
            }
            d[idx] = 0;
            for(auto p : g[idx])
            {
                d[p] --;
            }
            ans ++;
        }
        if(ans >= 11)
        {
            cout << "GG\n";
        }
        else
        {
            cout << ans << '\n';
        }
    }
	
	return 0;
}