20分求助
查看原帖
20分求助
739437
notwhy楼主2022/10/14 20:18
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
void dfs(vector<int> a[15000], int v, bool visit[1500], int time[1500]);
int main()
{
    int cow[150] = {0}, time[1500] = {0};
    int k, n, m, u, v, ans = 0, mr;
    bool visit[1500];
    vector<int> pic[15000];
    cin >> k >> n >> m;

    for(int i = 1; i <= k; i++)
    {
        cin >> mr;
        cow[mr] = 1;
    }

    for(int i = 1; i <= m; i++)
    {
        cin >> u >> v;
        pic[u].push_back(v);
    }

    for(int i = 1; i <= n; i++)
    {
        if(cow[i] == 1)
        {
            memset(visit, 0, sizeof(visit));
            dfs(pic, cow[i], visit, time);
        }
    }

    for(int i = 1; i <= n; i++)
    {
        if(time[i] == k)
            ans++;
    }

    cout << ans << endl;
    return 0;
}

void dfs(vector<int> a[15000], int v, bool visit[1500], int time[1500])
{
    time[v]++;
    visit[v] = true;
    for(int i = 0; i < a[v].size(); i++)
    {
        if(!visit[a[v][i]])
            dfs(a, a[v][i], visit, time);
    }
}

属实不会了

2022/10/14 20:18
加载中...