Pagini recente » Cod sursa (job #893872) | Cod sursa (job #415497) | Cod sursa (job #776908) | Cod sursa (job #2035965) | Cod sursa (job #179899)
Cod sursa(job #179899)
#include <stdio.h>
long depth, max, i, n, x[5001], a[5001], b[5001], c[5001], used[5001];
long egale(long i)
{
if (a[i] == b[i] || b[i] == c[i] || a[i] == c[i])
return 1;
return 0;
}
void do_(long st, long dr)
{
++depth;
if (st > dr)
{
--depth;
return;
}
max = max < depth ? depth : max;
long k = egale(dr - st);
if (k)
{
long i = st;
while (used[i])
++i;
x[++x[0]] = i;
//printf("%ld ", i);
used[i] = 1;
do_(st, i - 1);
do_(i + 1, dr);
}
else
{
long i = st, l = 0;
while (used[i] || !l)
{
if (!used[i])
l = 1;
++i;
}
//printf("%ld ", i);
x[++x[0]] = i;
used[i] = 1;
do_(st, i - 1);
do_(i + 1, dr);
}
--depth;
}
int main()
{
freopen ("sortare.in", "rt", stdin);
freopen ("sortare.out", "wt", stdout);
scanf("%ld", &n);
for (i = 1; i < n; ++i)
scanf("%ld %ld %ld", &a[i], &b[i], &c[i]);
do_(1, n);
printf("%ld\n", max);
for (i = 1; i <= x[0]; ++i)
printf("%ld ", x[i]);
printf("\n");
return 0;
}