1146 Topological Order

link

 

 

int N,M;
int ind[1001];
int le[1001];
int main(){
    cin>>N>>M;
    vector<vector<int>> adj(N+1);
    for(int i=0;i<M;i++){
        int u,v;
        cin>>u>>v;
        ind[v]++;
        adj[u].push_back(v);
    }
    int K;
    cin>>K;
    vector<int> res;
    for(int i=0;i<K;i++){
        bool valid=true;
        int tmpind[1001];
        for(int j=1;j<=N;j++) tmpind[j]=ind[j];
        for(int j=1;j<=N;j++){
            int a;
            cin>>a;
            if(tmpind[a]>0){
                valid=false;
            }
            for(int n:adj[a]){
                tmpind[n]--;
            }
        }
        if(!valid) res.push_back(i);
    }
    for(int i=0;i<res.size();i++){
        if(i>0) printf(" ");
        printf("%d", res[i]);
    }
    return 0;
}

 

posted @ 2020-03-24 17:18  feibilun  阅读(93)  评论(0编辑  收藏  举报