zoukankan      html  css  js  c++  java
  • c_pat_拓扑序列(减入度+注意输入坑)

    第一行包含两个整数 N 和 M,分别表示有向图的点和边的数量。
    接下来 M 行,每行给出一条边的起点和终点。
    点的编号从 1 到 N。
    再一行包含一个整数 K,表示询问次数。
    接下来 K 行,每行包含一个所有点的排列。
    一行中的数字用空格隔开。
    输出格式
    在一行中输出所有不是拓扑序列的询问序列的编号。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1005, K=105;
    vector<int> g[N];
    int main() {
        std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
        int n,m; cin>>n>>m;
        vector<int> in(n+5,0);
        for (int i=0; i<m; i++) {
            int u,v; cin>>u>>v;
            g[u].push_back(v);
            in[v]++;
        }
        int k, is_firstTime=true; cin>>k;
        for (int i=0; i<k; i++) {
            bool is_topo=true;
            vector<int> in1(in);
            for (int j=0; j<n; j++) {
                int u; cin>>u;
                if (in1[u]!=0) {
                    is_topo=false;      //不能提前break啊,还要输入数据...
                }
                for (int v : g[u]) in1[v]--;
            }
            if (!is_topo) {
                if (is_firstTime) cout<<i, is_firstTime=false;
                else              cout<<' '<<i;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    第12课
    第11课
    第6课
    第5课
    ubuntu apache 通过端口新建多个站点
    phpstudy所需运行库
    ubuntu 修改和配置ip
    Linux Cp命令
    Ubuntu各个版本的镜像下载地址
    ubuntu 虚拟机添加多个站点
  • 原文地址:https://www.cnblogs.com/wdt1/p/13697514.html
Copyright © 2011-2022 走看看