社区讨论

80求调#7#8MLE

P1983[NOIP 2013 普及组] 车站分级参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhjtc2pn
此快照首次捕获于
2025/11/04 08:10
4 个月前
此快照最后确认于
2025/11/04 08:10
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N=1e3+5,M=1e3+5;
int n,m,d[N],l[N];
bool f[N];
queue<int>q;
vector<int>g[N],a[N];
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int s;
        cin>>s;
        a[i].push_back(s);
        for(int j=1;j<=s;j++){
            int x;
            cin>>x;
            a[i].push_back(x);
        }
    }
    for(int i=1;i<=m;i++){
        memset(f,0,sizeof(f));
        for(int v=1;v<=a[i][0];v++)
            f[a[i][v]]=1;
        for(int j=a[i][1];j<=a[i][a[i][0]];j++){
            if(f[j]==0){
                for(int k=1;k<=a[i][0];k++){
                    g[a[i][k]].push_back(j);
                    d[j]++;
                }
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(d[i]==0){
            q.push(i);
            l[i]=1;
        }
    }
    while(!q.empty()){
        int u=q.front();
        q.pop();
        for(int v:g[u]){
            if(l[v]<l[u]+1)
                l[v]=l[u]+1;
            d[v]--;
            if(d[v]==0)
                q.push(v);
        }
    }
    int maxn=0;
    for(int i=1;i<=n;i++)
        maxn=max(maxn,l[i]);
    cout<<maxn<<endl;
    return 0;
}
去重只有30分 在线等

回复

1 条回复,欢迎继续交流。

正在加载回复...