Skip to content

Pro4

原始文件为 CPP 代码,本文是转换后的 Markdown 文件。

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <map>
#include <vector>

using namespace std;

const int maxn = 1005;

bool visit[maxn];
int count[maxn];
vector<int> adjG[maxn];
void dfs(int root,int current);
int main()
{
    //freopen("in.txt","r",stdin);
    memset(visit,false,sizeof(visit));
    memset(count,0,sizeof(count));

    int n,m;
    scanf("%d%d",&n,&m);

    for (int i = 1; i <= n; ++i)    adjG[i].clear();

    for (int i = 0; i < m; ++i)
    {
        int from,to;
        scanf("%d%d",&from,&to);
        adjG[from].push_back(to);
    }

    for (int i = 1; i <= n; ++i)
    {
        for (int j = 1; j <= n; ++j)
        {
            visit[j] = false;
        }
        visit[i] = true;
        dfs(i,i);
    }

    int ans = 0;
    for (int i = 1; i <= n; ++i)
    {
        if (count[i] >= n-1) ++ans;
        //cout << count[i] << endl;
    }
    cout << ans << endl;
} 

void dfs(int root, int current)
{
    //cout << root << "---" << current << endl;
    int adjnum = adjG[current].size();

    for (int i = 0; i < adjnum; ++i)
    {
        int v = adjG[current][i];
        if (visit[v]) continue;

        count[v]++;
        count[root]++;
        visit[v] = true;
        dfs(root,v);
    }
}