题目
很简单的DFS题,数据量不大,由于每个部门知道其他部门的数量位置,这里采用了vector动态储存数据。
贴上代码
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
vector<int>v[1001];
int vis[1001]={0};
int a[1001][1001]={0};
void dfs(int x,int pre)
{
vis[x]=1;
a[x][pre]=1;
a[pre][x]=1;
for(int i=0;i<v[x].size();i++)
{
if(vis[v[x][i]]==0)
{
dfs(v[x][i],pre);
}
}
}
int main()
{
int n,m;
int x,y,num=0;
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>x>>y;
v[x].push_back(y);
}
for(int i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
dfs(i,i);
}
for(int i=1;i<=n;i++)
{
int j;
for(j=1;j<=n;j++)
{
if(a[i][j]==0)break;
}
if(j==n+1)num++;
}
cout<<num<<endl;
}