AcWing 1639. 拓扑顺序
原题链接
简单
作者:
leo123456
,
2020-08-27 22:06:50
,
所有人可见
,
阅读 787
//图论模拟,拓扑排序,后面比前面的大顺序上,给定询问一个顺序, 然后去遍历每条边就可以了
#include<iostream>
#include<cstring>
using namespace std;
const int N=1010,M=10010;
int n,m;
struct Edge
{
int a,b;
}e[M];
int p[N];
int main()
{
cin>>n>>m;
for(int i=0;i<m;i++) cin>>e[i].a>>e[i].b;
int k;
cin>>k;
bool is_first=true;
for(int i=0;i<k;i++)
{
for(int j=1;j<=n;j++)
{
int x;
cin>>x;
p[x]=j;
}
bool success=true;
for(int j=0;j<m;j++)
if(p[e[j].a]>p[e[j].b])
{
success=false;
break;
}
if(!success)
{
if(is_first)
{
cout<<i;
is_first=false;
}
else cout<<' '<<i;
}
}
cout<<endl;
return 0;
}