Pagini recente » Cod sursa (job #353186) | Cod sursa (job #336564) | Cod sursa (job #689966) | Cod sursa (job #1792384) | Cod sursa (job #2037049)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("sortare.in");
ofstream fout("sortare.out");
int v[5005][3], n, nr, sol[5005];
void move_dr( int p ){
for( int i = n; i >= p; i-- )
sol[i + 1] = sol[i];
}
void solve( int n ){
nr++;
if( n == 1 ){
sol[1] = 1;
return;
}else{
if( v[n][0] == v[n][1] ){
solve( n - 1 );
move_dr( v[n][0] );
sol[ v[n][0] ] = n;
}else{
solve( n - 2 );
move_dr( v[n][0] );
sol[ v[n][0] ] = n - 1;
move_dr( v[n][1] );
sol[ v[n][1] ] = n;
}
}
}
int main(){
fin >> n;
for( int i = 2; i <= n; i++ ){
fin >> v[i][0] >> v[i][1] >> v[i][2];
sort( v[i], v[i] + 3 );
}
solve( n );
fout << nr << "\n";
for( int i = 1; i <= n; i++ ){
fout << sol[i] << " ";
}
return 0;
}