Pagini recente » Cod sursa (job #2649931) | Cod sursa (job #2173550) | Cod sursa (job #586972) | Cod sursa (job #743262) | Cod sursa (job #163460)
Cod sursa(job #163460)
# include<stdio.h>
# define input "sortare.in"
# define output "sortare.out"
# define max 5001
int res[max],i,n,pos[max],x,y,pas,m,add;
struct pozitii
{
int x,y,z;
}p[max];
int main()
{
freopen(input,"r",stdin);
freopen(output,"w",stdout);
scanf("%d",&n);
m = n;
pos[1] = 1;
for(i=2;i<=n;i++)
{
scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].z);
pos[i] = i;
}
while(n>1)
{
if(p[n].x == p[n].y && p[n].y == p[n].z)
{
res[pos[p[n].x]] = n;
for(i=p[n].x;i<=n;i++)
pos[i] = pos[i+1];
n--;
add++;
}
else
{
x = p[n].x;
if(p[n].y != x)
y = p[n].y;
else
y = p[n].z;
int aux;
if(x > y)
aux = x,x=y,y=aux;
res[pos[x]] = n;
res[pos[y]] = n-1;
add=1;
for(i=x;i<=n;i++)
{
if(i == y-1) add++;
pos[i] = pos[i+add];
}
n-=2;
}
pas++;
}
printf("%d\n",pas+1);
for(i=1;i<=m;i++)
{
if(!res[i]) res[i] =1;
printf("%d ",res[i]);
}
return 0;
}