蒟蒻学拓扑排序,莫名bug
查看原帖
蒟蒻学拓扑排序,莫名bug
170410
向晚楼主2020/12/2 19:47
#include<iostream>
#include<queue>
#define MAXN 80112002
using namespace std;
queue <int> p;
int n,m,a,b,ans;
bool eat[5005][5005];
int du[5005];
void topo_sort(){
	for(int i=1;i<=n;i++)
		if(du[i]==0) p.push(i);
	while(!p.empty()){
		int sum=p.front();
		ans++;
		ans%=MAXN;
		p.pop();
		for(int i=1;i<=n;i++){
			if(i==sum) continue;
			if(eat[sum][i]) du[i]--;
			if(du[i]==0) p.push(i);
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>a>>b;
		eat[a][b]=1;
		du[b]++;
	}
	topo_sort();
	cout<<ans;
	return 0;
}
2020/12/2 19:47
加载中...