题意:知道一个数n, 然后n行,编号1到n, 每行输入几个数,每行以0结尾,输出一种符合要求的编号名次排序。
思路:入门题,理解 “ 度 ” 和 map[ ] [ ]的关系。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define M 110
int main()
{
int n;
int map[M][M];
int ingreed[M];
int ans[M];
while(cin>>n && n != 0){
memset(map,0,sizeof(map));
memset(ingreed,0,sizeof(ingreed));
for(int i = 1;i <= n; i++){
int p;
while(cin>>p,p){
map[i][p] = 1;
ingreed[p]++;
}
}
int all = 0;
for(int i = 1;i <= n; i++)
for(int j = 1;j <= n; j++)
if(ingreed[j] == 0){
ans[all++] = j;
ingreed[j] = -1;
for(int k = 1;k <= n; k++)
if(map[j][k] == 1)
ingreed[k]--;
break;
}
for(int i = 0;i < all; i++)
printf("%d%c",ans[i],i == all - 1 ? '\n' : ' ');
}
return 0;
}