40分...帮忙调一下
查看原帖
40分...帮忙调一下
1304133
ssy111000楼主2024/11/18 12:42
#include <bits/stdc++.h>
using namespace std;
struct lao{
    int A,B;
}l[500005];
int n,m,dn[5005],summ;
set<int> a[5005],xx,ss;
int dfs(int oo){
    if(dn[oo]!=0){
        return dn[oo];
        
    }else {
        int sum=0;
        for (set<int>::iterator it = a[oo].begin(); it != a[oo].end(); ++it){
            sum+=dfs(*it)%80112002;
        }dn[oo]=sum;
        return sum%80112002;
    }
    
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        xx.insert(i);
        ss.insert(i);
    }
    for(int i=1;i<=m;i++){
        cin>>l[i].A>>l[i].B;
        a[l[i].B].insert(l[i].A);
        if(xx.count(l[i].A)){
            xx.erase(l[i].A);
        }if(ss.count(l[i].B)){
            ss.erase(l[i].B);
        }a[l[i].B].insert(l[i].A);
    }for (set<int>::iterator it = ss.begin(); it != ss.end(); ++it) {
        dn[*it]=1;
    }for(set<int>::iterator it = xx.begin(); it != xx.end(); ++it){
        summ+=dfs(*it)%80112002;
    }cout<<summ%80112002;
}
2024/11/18 12:42
加载中...