我写了一个错误代码:
#include<bits/stdc++.h>
using namespace std;
int n;
vector<int>mp[102];
int p[102];
int ans[102],now;
void dfs(int x){
ans[++now]=x;
for(int i=0;i<mp[x].size();i++){
p[mp[x][i]]--;
if(!p[mp[x][i]]){
dfs(mp[x][i]);
}
}
return ;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
while(true){
int x;cin>>x;
if(x==0)break;
mp[i].push_back(x);
p[x]++;
}
}
for(int i=1;i<=n;i++){
if(p[i]==0){
dfs(i);
}
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<' ';
}
return 0;
}
过了。我这里建议加一组hack:
4
2 0
0
0
0