Pagini recente » Cod sursa (job #1446168) | Cod sursa (job #482425) | Cod sursa (job #441390) | Cod sursa (job #183590) | Cod sursa (job #485529)
Cod sursa(job #485529)
# include <algorithm>
using namespace std ;
# define x first
# define y second
const char FIN[] = "sortare.in", FOU[] = "sortare.out" ;
const int MAX = 5005 ;
pair < int, pair < int, int > > V[MAX] ;
int X[MAX] ;
int N, sol ;
inline void see ( int nmb, int x ) {
for ( int i = 1; i <= N; ++i ) {
if ( X[i] == 0 ) {
if ( --nmb == 0 ) {
X[i] = x;
break ;
}
}
}
}
void solve ( void ) {
for ( int i = N; i ; --i, ++sol ) {
if ( V[i].x != V[i].y.x && V[i].y.x != V[i].y.y && V[i].y.y != V[i].x ) {
see ( V[i].x, i - 1 ) ;
V[i].x < V[i].y.x ? see ( V[i--].y.x - 1, i ) : see ( V[i--].y.x, i ) ;
} else {
see ( V[i].y.x == V[i].y.y ? V[i].y.x : V[i].x , i ) ;
}
}
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
scanf ( "%d", &N ) ;
V[1].x = V[1].y.x = V[1].y.y = 1 ;
for ( int i = 2; i <= N; ++i ) {
scanf ( "%d %d %d", &V[i].x, &V[i].y.x, &V[i].y.y ) ;
}
solve () ;
printf ( "%d\n", sol ) ;
for ( int i = 1; i <= N; ++i ) {
printf ( "%d ", X[i] ) ;
}
}