30pts求助
查看原帖
30pts求助
1152799
wsy_I楼主2025/7/22 08:14
#include<bits/stdc++.h>
#define N (int)(1e3+1e1)
using namespace std;
int n,m,G[N][N],s,a[N],b[N],tp,ans,r[N];
bool vis[N];
struct node{int p,d;};
int bfs(int st){
    int ans=0;
    queue<node> q;
    q.push({st,1});
    vis[st]=true;
    while(!q.empty()){
        node no=q.front();
        q.pop();
        for(int i=1;i<=n;i++){
            if(!vis[i] && G[no.p][i]==1){
                q.push({i,no.d+1});
                vis[G[no.p][i]]=true;
                ans=max(ans,no.d+1);
            }
        }
    }
    return ans;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>s;
        for(int j=1;j<=s;j++) cin>>a[j];
        for(int j=1;j<=s-1;j++){
            for(int k=a[j]+1;k<=a[j+1]-1;k++) b[++tp]=k;
        }
        for(int j=1;j<=s;j++){
            for(int k=1;k<=tp;k++) G[a[j]][b[k]]=1,r[b[k]]++;//建边a[j]->b[k]
        }
        tp=0;
    }
    for(int i=1;i<=n;i++) if(r[i]==0){
        memset(vis,false,sizeof(vis));
        ans=max(ans,bfs(i));
    }
    cout<<ans<<endl;
    return 0;
}

评测记录:

AC  AC  MLE MLE TLE  
MLE MLE MLE TLE AC
2025/7/22 08:14
加载中...