题目地址
1.拓扑排序的理解
2.给出一个有向图,给出图顶点的几个序列、判断这些序列中是否为拓扑排序
3. int b[n] vector a(b,b+n)可以拷贝b中元素
#include<bits/stdc++.h>
using namespace std;
int in[1005];
vector<int > grape[1005];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
int u,v;
scanf("%d%d",&u,&v);
grape[u].push_back(v);
in[v]++;
}
bool flag = false,control_out=false;
int t;
scanf("%d",&t);
for(int i=0;i<t;i++){
//注节点是从1开始算的所以要复制(in,in+n+1);
vector<int > tp(in,in+n+1);
for(int j=0;j<n;j++){
int id;
scanf("%d",&id);
if(tp[id]!=0) flag = true;
for(int s=0;s<grape[id].size();s++)
tp[grape[id][s]]--;
}
if(flag){
if(control_out==false){
control_out = true;
cout<<i;
}
else{
cout<<" "<<i;
}
flag = false;
}
}
return 0;
}