Pagini recente » Cod sursa (job #1196964) | Cod sursa (job #1297376) | Cod sursa (job #684498) | Cod sursa (job #1570220) | Cod sursa (job #2298244)
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
ifstream cin("sortare.in");
ofstream cout("sortare.out");
int N,n,x,y,k,cnt;
vector<int> Poz[5005];
int sol[5005],index[5005];
int main(){
cin>>n; index[1]=1; N=n;
for(int i=2;i<=n;i++){
index[i]=i;
for(int j=1;j<=3;j++){
cin>>x; Poz[i].push_back(x);
}
}
for(int i=2;i<=n;i++){
sort(Poz[i].begin(),Poz[i].end());
Poz[i].resize(distance(Poz[i].begin(),unique(Poz[i].begin(),Poz[i].end())));
}
cnt=1;
while(n>1){
if(Poz[n].size()==3){
y=Poz[n].back();
Poz[n].pop_back();
x=Poz[n].back();
sol[index[x]]=n-1;
sol[index[y]]=n;
k=0;
for(int i=1;i<=n;i++)
if(!sol[index[i]]) index[++k]=index[i];
n-=2;
}
else{
x=Poz[n].back();
sol[index[x]]=n;
k=0;
for(int i=1;i<=n;i++)
if(!sol[index[i]]) index[++k]=index[i];
--n;
}
++cnt;
}
sol[index[1]]=1;
cout<<cnt<<'\n';
for(int i=1;i<=N;i++)
cout<<sol[i]<<' ';
}