RE求助

P1983 [NOIP2013 普及组] 车站分级

ShizukuQWQ @ 2023-05-20 10:56:53


#include<bits/stdc++.h>
using namespace std;
int n,m,ru[1145],x,a[1005],b[1005],at,bt,ans;
bool f[1005],ff[1005][1005];
vector<int> v[1145];
struct node{
    int x,s;
}fr,sh;
queue<node> q;
int topo(){
    for(int i=1;i<=n;i++){
        if(ru[i]==0){
            sh.x=i,sh.s=1;
            q.push(sh);
        }
    }
    while(!q.empty()){
        fr=q.front();
        q.pop();
        ans=max(ans,sh.s);
        for(int i=0;i<v[fr.x].size();i++){
            int u=v[fr.x][i];
            ru[u]--;
            if(ru[u]<1){
                sh.x=u;
                sh.s=fr.s+1;
                q.push(sh);
            }
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int qwq,x;
        cin>>qwq;
        at=0;
        bt=0;
        int mx=0;
        for(int j=1;j<=qwq;j++) cin>>x,f[x]=1,mx=max(mx,x);
        for(int j=1;j<=mx;j++){
            if(f[j]) a[++at]=j;
            else b[++bt]=j;
        }
        for(int j=1;j<=at;j++){
            for(int k=1;k<=bt;k++){
                if(!ff[b[k]][a[j]]){
                    ff[b[k]][a[j]]=1;
                    v[b[k]].push_back(a[j]);
                    ru[a[j]]++;
                }
            }
        }
    }
    topo();
    cout<<ans;
}
              re求助

by 喵仔牛奶 @ 2023-05-20 11:04:25

@gzhgzhgzh


|