Pagini recente » Cod sursa (job #2965065) | Cod sursa (job #2500986) | Cod sursa (job #3272230) | Cod sursa (job #2570600) | Cod sursa (job #1854935)
# include <fstream>
# include <set>
# define DIM 30010
using namespace std;
ifstream fin("count.in");
ofstream fout("count.out");
set<int> Lista[DIM];
set<int>::iterator it;
int Marcat[DIM],c[DIM],v[DIM],val[DIM];
int n,m,i,j,t,x,y,s,p,u,maxim,nrmax,k;
int main () {
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>x>>y;
Lista[x].insert(y);
Lista[y].insert(x);
}
for(i=1;i<=n;i++){
p=0;
for(it=Lista[i].begin();it!=Lista[i].end();it++)
p++;
val[i]=p;
s+=p;
if(p<=5){
c[++u]=i;
Marcat[i]=1;
}
}
maxim=2;
nrmax=s/2;
p=1;
while(p<=u){
int nc=c[p++];
k=0;
for(it=Lista[nc].begin();it!=Lista[nc].end();it++)
v[++k]=*it;
for(i=1;i<=k-2;i++)
for(j=i+1;j<=k-1;j++)
for(t=j+1;t<=k;t++){
if(Lista[nc].count(v[i])&&Lista[nc].count(v[j])&&Lista[nc].count(v[t])&&Lista[v[i]].count(v[j])&&Lista[v[i]].count(v[t])&&Lista[v[j]].count(v[t])){
if(4>maxim){
maxim=4;
nrmax=0;
}
if(4==maxim)
nrmax++;
}
}
if(maxim!=4)
for(i=1;i<k;i++)
for(j=1;j<=k;j++){
if(Lista[nc].count(v[i])&&Lista[nc].count(v[j])&&Lista[v[i]].count(v[j])){
if(3>maxim){
maxim=3;
nrmax=0;
}
if(3==maxim)
nrmax++;
}
}
for(i=1;i<=k;i++){
Lista[v[i]].erase(Lista[v[i]].find(nc));
val[i]--;
if(val[i]<=5&&Marcat[i]==0){
c[++u]=i;
Marcat[i]=1;
}
}
}
fout<<maxim<<" "<<nrmax<<"\n";
return 0;
}