Rt
0pts
本人目标60pts;
不要满分的
P1173
#include<bits/stdc++.h>
using namespace std;
int pru[100005];
int n,m,x,y,dis[1000001],num,in[1000001],out[1000001],f[10001][10001];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y;
out[x]++;
in[y]++;
f[x][out[x]]=y;
}
int l=1,r=0;
for(int i=1;i<=n;i++){
if(in[i]==0){
pru[++r]=i;
dis[i] = 1;
}
}
while(l<=r){
int u=pru[r];
r--;
for(int i=1;i<=out[u];i++){
in[f[u][i]]--;
if(in[f[u][i]]==0){
pru[++r]=f[u][i];
dis[f[u][i]]=dis[u]+1;
}
}
}
for(int i=1;i<=n;++i){
cout<<dis[i]<<endl;
}
return 0;
}