用的是1094几乎一样的方法和思路,不多写了
#include<iostream>
#include <string>
#include<vector>
#include<algorithm>
#include<set>
#include<fstream>
#include<cmath>
using namespace std;
#define lch(i) ((i)<<1)
#define rch(i) ((i)<<1|1)
#define sqr(i) ((i)*(i))
#define pii pair<int,int>
#define mp make_pair
#define FOR(i,b,e) for(int i=b;i<=e;i++)
#define ms(a) memset(a,0,sizeof(a))
const int maxnum =105;
const int inf = 100005;
int road[maxnum][maxnum];
vector<int> seq;
int n,m;
int cmp(int a,int b){
return road[a][0]>road[b][0];
}
int main()
{
//ifstream fin("G:/1.txt");
int u,sum;
scanf("%d",&n);
//fin>>n;
sum=0;
ms(road);seq.clear();
FOR(i,1,n){
road[i][i]=1;
seq.push_back(i);
}
FOR(i,1,n){
//fin>>str;
while(1){
//fin>>u;
scanf("%d",&u);
if(u==0)break;
if(road[i][u]) continue;
FOR(j,1,n){
FOR(k,1,n){
if(road[j][i]&&road[u][k]&&!road[j][k]){
road[j][0]++;
road[j][k]=1;
}
}
}
}
}
sort(seq.begin(),seq.end(),cmp);
FOR(i,0,n-1){
printf("%d ",seq[i]);
}
return 0;
}