写的时候太不仔细了,找到错误的序列,每个case居然push完序列号后直接break,然后接下来的数没读完,导致一堆WA,怀疑人生了都。。。
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int n,m,k;
vector<int> g[1005];
vector<int> indeg;
vector<int> ans;
int main(){
scanf("%d%d",&n,&m);
indeg.resize(n+1);
int a, b;
for(int i = 0; i < m; ++i){
scanf("%d%d",&a,&b);
++indeg[b];
g[a].push_back(b);
}
scanf("%d",&k);
for(int i = 0; i < k; ++i){
vector<int> tmp = indeg;
int v, flag = 1;
for(int j = 0; j < n; ++j){
scanf("%d",&v);
if(flag)
if(tmp[v] == 0)
for(int t = 0; t < g[v].size(); ++t)
--tmp[g[v][t]];
else{
flag = 0;
ans.push_back(i);
}
}
}
for(int i = 0; i < ans.size(); ++i){
if(i != 0)
printf(" %d",ans[i]);
else
printf("%d",ans[i]);
}
return 0;
}