这个我做了三天的代码竟然卡#4 #5了!!!
心情不大好T_T...
求看看怎么调能过。
#include<bits/stdc++.h>
using namespace std;
int n,m,sorted[100001];
short in_deg[100001],ans[100001];
struct node{
int nxt_sum,nxt[4000];
}excel[100001];
int main(){
cin >> n >> m;
for(int i = 0;i < m;i++){
int x,y;
cin >> x >> y;
excel[x].nxt[excel[x].nxt_sum++] = y;
in_deg[y]++;
}
int sted_sum = 0;
queue<int> q;
for(int i = 1;i <= n;i++){
if(in_deg[i] == 0){
q.push(i);
}
ans[i] = 1;
}
while(!q.empty()){
int temp = q.front();
q.pop();
sorted[sted_sum++] = temp;
for(int i = 0;i < excel[temp].nxt_sum;i++){
int to = excel[temp].nxt[i];
if(in_deg[to] > 0){
in_deg[to]--;
if(in_deg[to] == 0){
q.push(to);
ans[to] = ans[temp] + 1;
}
}
}
}
for(int i = 1;i <= n;i++) cout << ans[i] << endl;
return 0;
}
我为了避免MLE甚至特意去学了邻接表
(我发帖的时候输的验证码是fw99
(我是fw请救救我)
)