我也看不懂这是个啥,能改吗???
#include<bits/stdc++.h>
using namespace std;
int n,m,in[200005],head[200005],num,dis[200005];
struct node
{
int to,next;
}s[10000005];
int add(int x,int y)
{
s[num++].next=head[x];
s[num].to=y;
head[x]=num;
return 0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
in[y]++;
add(x,y);
}
queue<int>q;
for(int i=1;i<=n;++i)
{
if(in[i]==0)
{
q.push(i);
dis[i]=1;
}
}
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=head[u];i;i=s[i].next)
{
int k=s[i].to;
in[k]--;
if(in[k]==0)
{
q.push(k);
dis[k]=dis[u]+1;
}
}
}
for(int i=1;i<=n;++i)
{
printf("%d\n", dis[i]);
}
return 0;
}