Pagini recente » Cod sursa (job #1871889) | Cod sursa (job #1660830) | Cod sursa (job #140513) | Cod sursa (job #2789549) | Cod sursa (job #210720)
Cod sursa(job #210720)
#include <stdio.h>
const int NMAX=5001;
int N,h,A[NMAX],B[NMAX],C[NMAX],x[NMAX];
void read(){
scanf("%d",&N);
for (int i=2;i<=N;++i) scanf("%d %d %d",&A[i],&B[i],&C[i]);
}
void write(){
printf("%d\n",h);
for (int i=1;i<=N;++i) printf("%d ",x[i]);
}
void schimba(int i,int j){
int aux=x[i];x[i]=x[j];x[j]=aux;
}
void solve(int n){
++h;
if (n==1) {x[1]=1;return;}
if (A[n]!=B[n] && B[n]!=C[n] && C[n]!=A[n]){
solve(n-2);
x[n-1]=n-1;x[n]=n;
schimba(B[n],n-1);
schimba(C[n],n);
}
else{
solve(n-1);
x[n]=n;
schimba(C[n],n);}
}
int main(){
freopen("sortare.in","r",stdin);
freopen("sortare.out","w",stdout);
read();
solve(N);
write();
return 0;
}