10分,8组TLE,直接gg
查看原帖
10分,8组TLE,直接gg
365166
神光qwq楼主2020/8/5 21:16
#include<bits/stdc++.h>
using namespace std;
long long dp[5001],n,m,c[5001],bc[5001],start[5001],end[5001],ans=0,len1=0,len2=0;
bool flag[5001][5001];
void dfs(int now){
	bool bj=0;
	for(int i=1;i<=n;i++){
		if(flag[now][i]==1){
			dp[i]++,bj=1;
			dfs(i);
		}
	}
	if(!bj) return ;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int a,b;
		cin>>a>>b;
		bc[a]++,c[b]++;
		flag[a][b]=1;
	}
	for(int i=1;i<=n;i++){
		if(bc[i]==0){
			end[++len1]=i;
		}
		else if(c[i]==0){
			start[++len2]=i;
		}
	}
	for(int i=1;i<=len1;i++){
		dp[start[i]]=1;
		dfs(start[i]);
	}
	for(int i=1;i<=len2;i++){
		ans+=dp[end[i]];
	}
	cout<<ans%80112002;
	return 0;
}

用的深搜,结果自闭,召唤dalao之术!!!

2020/8/5 21:16
加载中...