Pagini recente » Cod sursa (job #1577688) | Cod sursa (job #1306077) | Cod sursa (job #3253545) | Cod sursa (job #53591) | Cod sursa (job #60211)
Cod sursa(job #60211)
#include <cstdio>
#include <cstdlib>
#include <vector>
#define NMAX 30030
#define B 30
using namespace std;
int *A[NMAX];
vector<int> Gra[NMAX];
int N, M, G[NMAX], V[10], Nv, S[10];
int Cmax, NCmax;
char buf[60000*2*12];
void subm(int nod)
{
int i, j, k, n = (1<<G[nod]), x, y;
for (i = 0; i < n; i++)
{
int num = 0, ns = 0;
for (j = 0; j < n; j++)
if ( ((i>>j)&1) == 1 ) S[ns++] = V[j];
for (j = 0; j < ns; j++)
for (k = j+1; k < ns; k++){
x = S[k]/B; y = S[k]%B;
if (((A[ S[j] ][ x ]>>y)&1) == 1) num++; }
if (2*num == (ns-1)*ns)
if (Cmax < ns) Cmax = ns, NCmax = 1;
else
if (Cmax == ns) NCmax++;
}
}
int main()
{
int i, j, k, n, x, y;
freopen("count.in", "r", stdin);
setbuffer(stdin, buf, sizeof(buf));
scanf("%d %d", &N, &M);
for (k = 0; k < M; k++)
{
scanf("%d %d", &i, &j);
G[i]++; G[j]++;
Gra[i].push_back(j);
Gra[j].push_back(i);
}
for (i = 1; i <= N; i++)
{
j = G[i]/B;
A[i] = (int *)malloc((j+1)*sizeof(int));
}
freopen("count.in", "r", stdin);
setbuffer(stdin, buf, sizeof(buf));
scanf("%d %d", &N, &M);
for (k = 0; k < M; k++)
{
scanf("%d %d", &i, &j);
x = j/B; y = j%B;
A[i][x] += (1<<y);
}
n = N;
for (i = 1; i <= N; i++)
if (G[i] < 6) break;
while (n--)
{
Nv = 0;
for (j = 0; j < G[i]; j++)
{
V[j] = Gra[i][j]; G[ Gra[i][j] ]--;
}
subm(i);
G[i] = N+1;
for (i = 1; i <= N; i++)
if (G[i] < 6) break;
}
freopen("count.out", "w", stdout);
printf("%d %d\n", Cmax, NCmax);
return 0;
}