下面的代码提交测试点2和5都WA,显示输出第一行第一列为0。这是为什么呀???我没看出来有什么问题啊……求大佬帮助。
#include<bits/stdc++.h>
using namespace std;
int m,n,a[200009],b[200009],x[100009],y[100009][150];
int deg[100009],c[100009],q[100009],t;
int w[100009],z[100009][150];
int main() {
cin>>n>>m;
for(int i=1;i<=m;i++) {
scanf("%d %d",&a[i],&b[i]);
x[b[i]]++;
y[b[i]][x[b[i]]]=a[i];
w[a[i]]++;
z[a[i]][w[a[i]]]=b[i];
deg[b[i]]++;
}
for(int i=1;i<=n;i++) {
if(deg[i]==0) {
t++;
q[t]=i;
}
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=w[q[i]];j++) {
deg[z[q[i]][j]]--;
if(deg[z[q[i]][j]]==0) {
t++;
q[t]=z[q[i]][j];
}
}
}
for(int i=1;i<=n;i++) {
int T=0;
for(int j=1;j<=x[q[i]];j++) {
if(c[y[q[i]][j]]>T) T=c[y[q[i]][j]];
}
c[q[i]]=T+1;
}
for(int i=1;i<=n;i++) printf("%d\n",c[i]);
return 0;
}