拓扑排序40分,WA后五个,悬赏关注
查看原帖
拓扑排序40分,WA后五个,悬赏关注
1408054
zhaolt2012楼主2025/7/29 22:32
#include<bits/stdc++.h> 
using namespace std;
long long n,m,r[5010],ans[5010],ansans;
long long v[500010],nxt[500010],head[500010],idx;
void tp(long long uu)
{
	long  q=0;
	for(int i=head[uu];i!=0;i=nxt[i])
	{
		long long vv=v[i];
		r[vv]--;
		ans[vv]=(ans[vv]%80112002+ans[uu]%80112002)%80112002;
		if(!r[vv]) tp(vv);
		q=1;
	}
	if(!q) ansans=(ansans%80112002+ans[uu]%80112002)%80112002;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		long  uu,vv;
		cin>>uu>>vv;
		idx++;
		nxt[idx]=head[uu];
		head[uu]=idx;
		v[idx]=vv;
		r[vv]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(!r[i])
		{
			ans[i]=1;
			tp(i);
		}
	}
	cout<<ansans%80112002;
	return 0;
}
2025/7/29 22:32
加载中...