Pagini recente » Cod sursa (job #1666613) | Cod sursa (job #2859507) | Cod sursa (job #276861) | Cod sursa (job #2407281) | Cod sursa (job #496367)
Cod sursa(job #496367)
#include <cstdio>
#define nmax 5010
int a[nmax], b[nmax], c[nmax], p[nmax], d[nmax], sol[nmax], n, r, k;
int main()
{
freopen("sortare.in","r",stdin);
freopen("sortare.out","w",stdout);
scanf("%d",&n);
int i, x, cn=n;
for (i=2; i<=n; i++) scanf("%d %d %d",&a[i],&b[i],&c[i]);
for (i=1; i<=n; i++) p[i]=i;
k=0;
while (n>1)
{
r++;
x=0;
if (a[n]!=b[n] && a[n]!=c[n] && b[n]!=c[n])
{
sol[p[a[n]]]=++k;
sol[p[b[n]]]=++k;
if (a[n]<b[n])
{
d[a[n]]=1;
d[b[n]-1]=2;
} else
{
d[b[n]]=1;
d[a[n]-1]=2;
}
} else
{
if (a[n]!=b[n]) x=c[n]; else x=a[n];
sol[p[x]]=++k;
d[x]=1;
}
for (i=1; i<=n; i++)
if (!d[i]) d[i]=d[i-1];
for (i=1; i<=n; i++) p[i]=p[i+d[i]];
if (x) n--; else n-=2;
for (i=1; i<=n; i++) d[i]=0;
}
r++;
printf("%d\n",r);
sol[p[1]]=cn;
for (i=1; i<=cn; i++)
printf("%d ",sol[i]);
printf("\n");
}