Pagini recente » Cod sursa (job #1872160) | Cod sursa (job #2532550) | Cod sursa (job #897348) | Cod sursa (job #1392593) | Cod sursa (job #2338902)
#include <bits/stdc++.h>
using namespace std;
ifstream f("count.in");
ofstream g("count.out");
int n,m,i,j,k,ans,cnt,lst[100010],G[100010],gr[100010],viz[100010];
vector <int> v[30005];
unordered_set <int> H[30005];
queue<int> q;
void bkt(int poz,int nr)
{
if(poz==k+1)
{
nr++;
if(nr>ans)
ans=nr,cnt=1;
else
if(nr==ans)
cnt++;
return ;
}
bkt(poz+1,nr);
for(i=1;i<=nr;i++)
if(H[G[i]].find(lst[poz])==H[G[i]].end())
return ;
G[nr+1]=lst[poz];
bkt(poz+1,nr+1);
}
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
v[x].push_back(y);H[x].insert(y);
v[y].push_back(x);H[y].insert(x);
gr[x]++;gr[y]++;
}
for(i=1;i<=n;i++)
if(gr[i]<6)
{
q.push(i);
viz[i]=1;
}
while(q.size())
{
int x=q.front();
q.pop();viz[x]=2;
k=0;
for(auto it:v[x])
if(viz[it]!=2)
{
lst[++k]=it;
gr[it]--;
if(gr[it]<6&&!viz[it])
{
q.push(it);
viz[it]=1;
}
}
bkt(1,0);
}
g<<ans<<' '<<cnt;
return 0;
}