样例在本地输入可以正常输出,但是交上去后只会输出1,有木有大佬能帮忙找错
#include<bits/stdc++.h>
using namespace std;
int n,p;
vector<int> tr[302];
int depth[302];
bool vis[302];
int ans=0;
int dfs(int x)//dfs求子节点个数
{
depth[x]=1;
for(int i=0;i<tr[x].size();i++)
{
depth[x]+=dfs(tr[x][i]);
}
return depth[x];
}
queue<int> q;
void bfs()//广搜模拟传染和控制
{
while(q.size())
{
int a=q.front();
q.pop();
ans++;
int cnt=0,tmp=0;
vis[a]=true;
for(int i=0;i<tr[a].size();i++)
{
if(depth[tr[a][i]]>cnt)//找到子节点个数最多的并封锁路线
{
tmp=tr[a][i];
cnt=depth[tr[a][i]];
}
}
vis[tmp]=true;
for(int i=0;i<tr[a].size();i++)
{
if(!vis[tr[a][i]])//模拟传染
{
q.push(tr[a][i]);
}
}
}
}
int main()
{
cin>>n>>p;
memset(depth,0,sizeof(depth));
int x,y;
for(int i=1;i<=p;i++)
{
cin>>x>>y;
tr[x].push_back(y);
}
dfs(1);
memset(vis,false,sizeof(vis));
q.push(1);
bfs();
cout<<ans;
return 0;
}