30分 七个WA 求助大佬
查看原帖
30分 七个WA 求助大佬
562937
Tonyhzd楼主2021/10/19 00:04
#include <bits/stdc++.h>
using namespace std;
int n,m,a[5002][5002],sum[5002],in[5002],out[5002],temp1,temp2,ans=0;
int main(){
	cin>>n>>m;
	int s=n;
	memset(a,0,sizeof(a));
	memset(sum,0,sizeof(sum));
    memset(in,0,sizeof(in));
    memset(out,0,sizeof(out));
	for (int i=1;i<=m;i++){
	    scanf("%d %d",&temp1,&temp2);
	    a[temp1][temp2]+=1;
		in[temp2]+=1;
	    out[temp1]+=1;
	}
	for (int i=1;i<=n;i++) if (in[i]==0){
		s--;
		sum[i]=1;
	}	
	while (s>0){
		for (int j=1;j<=n;j++){
			if (in[j]==0){
				s--;
			    for (int k=1;k<=n;k++) if (1==a[j][k]){
			    	sum[k]=sum[k]+sum[j];
			    	if (sum[k]>=80112002) sum[k]-=80112002;
			    	in[k]-=1;
			    }	
			    in[j]=-1;
		    }
		}
    }
    for (int j=1;j<=n;j++) if (out[j]==0){
    	ans=ans+sum[j];
        if (ans>=80112002) ans-=80112002;
    }
	cout<<ans;		
	return 0;
} 
2021/10/19 00:04
加载中...