Pagini recente » Cod sursa (job #3216705) | Cod sursa (job #2575792) | Cod sursa (job #3249024) | Cod sursa (job #239532) | Cod sursa (job #2398531)
#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;
}