美文网首页
1146 Topological Order(25 分)

1146 Topological Order(25 分)

作者: zjh3029 | 来源:发表于2018-08-07 15:24 被阅读0次

同一行未使用或未输入的数据要记得丢弃!!!
while (cin.get() != '\n') continue;

#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;

int M, N, L,a, b, c;
vector<vector<int> > v;
vector<int> vm;
vector<int> all;

bool check(int n)
{
    if (v[n].size()==0)
    {
        return true;
    }

    for (int i = 0; i < v[n].size(); i++)
    {
        if (find(vm.begin(), vm.end(), v[n][i]) == vm.end())
            return false;
    }
    return true;
}

int main()
{
    cin >> N >> M;
    v.resize(N);
    for (int i = 0; i < M; i++)
    {
        cin >> a >> b;
        a--;
        b--;
        v[b].push_back(a);
    }

    cin >> L;
    for (int i = 0; i < L; i++)
    {
        int cnt = 0;
        for (; cnt < N; cnt++)
        {
            cin >> a;
            if (check(a - 1))
                vm.push_back(a - 1);//现有的数列的集合
            else
            {
                while (cin.get() != '\n') continue;
                break;
            }
        }
        if (cnt!=N)
        {
            all.push_back(i);
        }
        vm.clear();
    }

    if (all.size()!=0)
    {
        cout << all[0];
    }
    for (int i = 1; i < all.size(); i++)
    {
        cout << " "<<all[i];
    }

    system("pause");
    return 0;
}

相关文章

网友评论

      本文标题:1146 Topological Order(25 分)

      本文链接:https://www.haomeiwen.com/subject/bdhavftx.html