Pagini recente » Cod sursa (job #2187051) | Cod sursa (job #2216391) | Cod sursa (job #1929005) | Cod sursa (job #1482469) | Cod sursa (job #2035668)
#include<fstream>
using namespace std;
int n, i, nr;
int v[5005];
struct str{
int a, b, c;
};
str w[5005];
ifstream fin("sortare.in");
ofstream fout("sortare.out");
void modif(int st, int dr){
for(int i = dr; i >= st; i--){
v[i + 1] = v[i];
}
}
void solve(int n){
nr++;
if(n == 1){
v[1] = 1;
return;
}
if(w[n].a != w[n].b && w[n].b != w[n].c && w[n].b != w[n].c){
solve(n - 2);
modif(w[n].a, n - 2);
v[ w[n].a ] = n - 1;
modif(w[n].b, n - 1);
v[ w[n].b ] = n;
}
else{
solve(n - 1);
int x;
if(w[n].a == w[n].b || w[n].a == w[n].c){
x = w[n].a;
}
else{
x = w[n].b;
}
modif(x, n - 1);
v[x] = n;
}
}
int main(){
fin>> n;
for(i = 2; i <= n; i++){
fin>> w[i].a >> w[i].b >> w[i].c;
}
solve(n);
fout<< nr <<"\n";
for(i = 1; i <= n; i++){
fout<< v[i] <<" ";
}
return 0;
}