Cod sursa(job #3285661)

Utilizator David2007David Preda David2007 Data 13 martie 2025 12:15:02
Problema Count Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<bits/stdc++.h>

using namespace std;

ifstream in("count.in");
ofstream out("count.out");

const int DIM = 3e4 + 7;

set <int> v[DIM];
vector <int> stiva;

int nr, mx;

set <int> s;

void back(int nod, int lvl)
{
	if(lvl > mx)
	{
		mx = lvl;
		nr = 1;
	}
	else
		if(lvl == mx)
		{
			nr++;
		}

	for(auto i : v[nod])
	{
		bool ok = true;

		for(auto j : stiva)
			if(v[i].count(j) == 0 || j < i)
			{
				ok = false;
				break;
			}

		if(ok == true)
		{
			stiva.push_back(i);
			back(nod, lvl + 1);
			stiva.pop_back();
		}
	}
}

int main()
{
	int n, m;
	in >> n >> m;

	for(int i = 1; i <= m; i++)
	{
		int x, y;
		in >> x >> y;

		v[x].insert(y);
		v[y].insert(x);
	}

	for(int i = 1; i <= n; i++)
		if(v[i].size() <= 5)
			s.insert(i);

	while(!s.empty())
	{
		int nod = *s.begin();
		s.erase(s.begin());

		back(nod, 1);

		for(auto i : v[nod])
		{
			v[i].erase(nod);

			if(v[i].size() <= 5)
				s.insert(i);
		}
	}

	out << mx << ' ' << nr;
}