全WA求调
查看原帖
全WA求调
1185284
Linktux楼主2025/6/27 22:06
#include <bits/stdc++.h>
using namespace std;
const int MOD=80112002;
const int N=5005;
int n,m,f[N],ans=-1;
bool book[N];
vector<int> g[N];
void dfs(int p,int len){
    if(len<=f[p])return;//剪枝优化
    f[p]=len;//记录最优的
    if(g[p].empty())ans=max(ans,len);//已经到头了
    for(int to:g[p])dfs(to,(len+1)%MOD);//继续走
    return;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=1,u,v;i<=m;++i){
        cin>>u>>v;
        g[u].push_back(v);//建立有向边:从被捕食者->捕食者
        book[v]=true;//book存的是哪些生物是绿色植物
    }
    for(int i=1;i<=n;++i)if(!book[i])dfs(i,1);//深搜
    cout<<ans<<endl;
}

本蒟蒻用的是建图+DFS的方式,题目里给的样例过了。有注释解释代码。

2025/6/27 22:06
加载中...