AcWing 1639. 拓扑顺序
原题链接
简单
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int N=1e3+5;
int n,m,k,arr[N];
vector<int>G[N];
int indegree[N],temp_in[N];
bool topsort(){
memcpy(temp_in,indegree,sizeof indegree);
for(int i=0;i<n;i++){
int p=arr[i];
if(temp_in[p]!=0) return 0;
for(auto q:G[p]) temp_in[q]--;
}
return 1;
}
int main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m;
while(m--){
int a,b;
cin>>a>>b;
a--;b--;
G[a].push_back(b);
indegree[b]++;
}
cin>>k;
for(int i=0;i<k;i++){
for(int j=0;j<n;j++){
cin>>arr[j];
arr[j]--;
}
if(!topsort()) cout<<i<<" ";
}
return 0;
}