1146 Topological Order
int N,M; int ind[1001]; int le[1001]; int main(){ cin>>N>>M; vector<vector<int>> adj(N+1); for(int i=0;i<M;i++){ int u,v; cin>>u>>v; ind[v]++; adj[u].push_back(v); } int K; cin>>K; vector<int> res; for(int i=0;i<K;i++){ bool valid=true; int tmpind[1001]; for(int j=1;j<=N;j++) tmpind[j]=ind[j]; for(int j=1;j<=N;j++){ int a; cin>>a; if(tmpind[a]>0){ valid=false; } for(int n:adj[a]){ tmpind[n]--; } } if(!valid) res.push_back(i); } for(int i=0;i<res.size();i++){ if(i>0) printf(" "); printf("%d", res[i]); } return 0; }