萌新没学过图论, 不知道思路对不对,能过样例
查看原帖
萌新没学过图论, 不知道思路对不对,能过样例
387330
williaw楼主2021/3/11 17:43
#include<iostream>
using namespace std;
int a[1000000];
int b[1000000];
int cnta[10000],cntb[10000];
int Mod=80112002;
long long ans;
int n,t;
void dfs(int cur,int end){
	if(cur==end) ans++;找到最强的动物就数量+1
	else{
	    for(int i=1;i<=t;i++){
	    	if(a[i]==cur) dfs(b[i],end);
      //一个被吃的动物对应一个捕食者
		}
	}
}
int main(){
	int start,end;
	cin>>n>>t;
	for(int i=1;i<=t;i++){
		cin>>a[i]>>b[i];
		cnta[a[i]]++;
		cntb[b[i]]++;
	}
	for(int i=1;i<=n;i++){
		if(cnta[i]==0) end=i;
		if(cntb[i]==0) start=i;
      //找到生产者和最强的动物
	}
	dfs(start,end);
	//cout<<start<<" "<<end<<endl;//测试用
	cout<<ans%Mod<<endl;
	return 0;
}
2021/3/11 17:43
加载中...