感觉原码可读性很强,就不注释了
#include<iostream>
#include<vector>
using namespace std;
int inline read()
{
int s=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
s=s*10+c-'0';
c=getchar();
}
return s*f;
}
int ans[100010],n,m,x,y;
bool b[100010];
vector<int> a[100010];
void dfs(int step)
{
int sum=0;
for(int i=0;i<a[step].size() ;i++)
{
if(b[a[step][i]]==1)sum=max(sum,ans[a[step][i]]);
else
{
dfs(a[step][i]);
sum=max(sum,ans[a[step][i]]);
}
}
ans[step]=sum+1;
!b[step];
}
int main()
{
int n=read(),m=read();
for(int i=1;i<=m;i++)
{
x=read(),y=read();
a[y].push_back(x);
}
for(int i=1;i<=n;i++)if(b[i]==0)dfs(i);
for(int i=1;i<=n;i++)cout<<ans[i]<<"\n";
}