Pagini recente » Cod sursa (job #1174916) | Cod sursa (job #2525031) | Cod sursa (job #842754) | Cod sursa (job #91005) | Cod sursa (job #496353)
Cod sursa(job #496353)
#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>0)
{
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[a[n]-1]=2;
d[b[n]]=1;
}
} 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;
}
printf("%d\n",r);
for (i=1; i<=cn; i++)
{
if (!sol[i]) sol[i]=cn;
printf("%d ",sol[i]);
}
printf("\n");
}