@[lizerui810](/user/757902)
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+2;
vector<int> e[5*N];//
int dfn[N],low[N],tot;
int zhan[N],zp[N];
int siz[N],scc[N],top,cnt,ans;
void l(int u)
{
dfn[u]=low[u]=++tot;
zhan[++top]=u;
zp[u]=1;
//for(int y:e[u])
for(int i=0;i<e[u].size();i++)//
{
int y=e[u][i];//
if(!dfn[y])//
{
l(y);
low[u]=min(low[u],low[y]);
}
else if(zp[y])
{
//low[u]=min(dfn[u],low[y]);
low[u]=min(low[u],low[y]);
}
}
if(dfn[u]==low[u]){
int y;++cnt;
do{
y=zhan[top--];
zp[y]=0;
++siz[cnt];
}while(y!=u);
}
}
int main()
{
int a,b;
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a>>b;
e[a].push_back(b);
}
for(int i=1;i<=n;i++)
{
if (!dfn[i]) l(i);
}
for(int i=1;i<=cnt;i++){
if(siz[i]>1)ans++;
}
cout<<ans;
}
```
by six_小6猪 @ 2022-08-24 21:00:21
@[six_小6猪](/user/191993)
谢谢大佬
by lizerui520 @ 2022-08-25 14:21:20