Pagini recente » Cod sursa (job #1601489) | Cod sursa (job #2888259) | Cod sursa (job #1726020) | Cod sursa (job #2246317) | Cod sursa (job #1662847)
#include <fstream>
#include <cstdlib>
#include <queue>
#define NM 30005
#define inf 1000000000
using namespace std;
ifstream fin("count.in");
ofstream fout("count.out");
int n, m, *A[NM], Grad[NM], Valid[NM], Valloc[NM];
int Stiva[NM], fi, maxim, sol;
void Test(int x)
{
int i, j, k, ad, ori, elem;
for (i=1; i<=A[x][0]; i++)
{
ad=A[x][i];
if (Valid[ad]==1) continue;
ori=0;
for (j=1; j<=fi; j++)
{
elem=Stiva[j];
for (k=1; k<=A[elem][0]; k++)
{
if (ad==A[elem][k])
{
ori++;
break;
}
}
}
if (ori==fi)
{
Stiva[++fi]=ad;
if (fi>maxim)
{
maxim=fi;
sol=1;
}
else
if (fi==maxim)
{
sol++;
}
Test(x);
fi--;
}
}
}
int getMin()
{
int i;
for (i=1; i<=n; i++)
{
if (Grad[i]<6)
{
Grad[i]=inf;
return i;
}
}
}
int main()
{
int i, x ,y, j;
fin>>n>>m;
for (i=1; i<=n; i++)
{
A[i] = (int *) realloc (A[i], sizeof(int));
A[i][0]=0;
}
for (i=1; i<=m; i++)
{
fin>>x>>y;
Grad[x]++;
Grad[y]++;
A[x][0]++;
A[x] = (int *) realloc (A[x], (A[x][0]+1)*sizeof(int));
A[x][A[x][0]]=y;
A[y][0]++;
A[y] = (int *) realloc (A[y], (A[y][0]+1)*sizeof(int));
A[y][A[y][0]]=x;
}
int p;
for (i=1; i<=n; i++)
{
p=getMin();
Valid[p]=1;
Stiva[1]=p;
fi=1;
Test(p);
}
fout<<maxim<<" ";
if (maxim<3)
fout<<sol;
if (maxim==3)
fout<<sol/2;
if (maxim==4)
fout<<sol/6;
return 0;
}