题目简述:
给定一个有向图,问所查询的几组序列中,不是该图的拓扑排序的是哪组。
#include<iostream>
#include<vector>
using namespace std;
int N,M,K;
vector<int>v[1001];
vector<int>ru(1001,0);
bool istopo(vector<int>&points){
vector<int>ru_copy=ru;
for(int point:points){
if(ru_copy[point]){
return false;
}
for(int post:v[point]){
ru_copy[post]--;
}
}
return true;
}
int main(){
cin>>N>>M;
while(M--){
int i,j;
cin>>i>>j;
v[i].push_back(j);
ru[j]++;
}
cin>>K;
vector<int>ans;
for(int j=0;j<K;j++){
vector<int>points(N);
for(int i=0;i<N;i++){
cin>>points[i];
}
if(istopo(points))continue;
else ans.push_back(j);
}
for(int i=0;i<ans.size();i++){
if(i)cout<<" ";
cout<<ans[i];
}
cout<<endl;
return 0;
}