求助 本地问题

P1983 [NOIP2013 普及组] 车站分级

Walker_Sama @ 2022-08-15 23:41:17

明明事课上的代码

可是跑起来就像喝了昏睡红茶的远野后辈一样(CE)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define P pair<int,int>
const int MAXN=1e3+5;
int s[MAXN][MAXN],n,m,ans,in[MAXN],vis[MAXN],tot,pd[MAXN][MAXN];
queue<P> q;
vector<int> v[MAXN];
int fastread(){
    char ch;
    int res=0;
    while(ch=getchar(),ch<'0'||ch>'9');
    res=ch-48;
    while(ch=getchar(),ch>'0'&&ch<'9')
    res=(res<<3)+(res<<1)+ch-48;
    return res;
}
void bfs(){
    int i;
    for(i=1;i<=n;i++)
    if(in[i]==0)
    q.push(make_pair(i,1));
    ans=1;
    while(!q.empty()){
        int u=q.front().first,val=q.front().second;
        q.pop();
        for(i=0;i<v[u].size();i++){
            int V=v[u][i];
            in[V]--;
            if(in[V]==0){
                q.push(make_pair(v,val+1));
                ans=max(ans,val+1);
            }
        }
    }
}
int main(){
    int i,j,a;
    n=fastread();
    m=fastread();
    for(i=1;i<=n;i++){
        s[i][0]=fastread();
        memset(vis,false,sizeof(vis));
        for(j=1;j<=s[i][0];j++){
            a=fastread();
            s[i][j]=a;
            vis[a]=1;
        }
        for(j=s[i][1];j<=s[i][s[i][0]];j++){
            if(vis[j]){
                continue;
            }
            for(int k=1;k<=s[i][0];k++){
                if(!pd[j][s[i][k]]){
                    in[s[i][k]]++;
                    v[j].push_back(s[i][k]);
                    pd[j][s[i][k]]=1;
                }
            }
        }
    }
    bfs();
    cout<<ans;
    return 0;
}

by 蒟酱 @ 2022-08-15 23:49:04

@Toby_Fox 第 31 行

q.push(make_pair(v,val+1));

你的 v 是个数组,应该是 V 吧


by Walker_Sama @ 2022-08-15 23:54:47

@蒟酱 谢谢熬夜巨佬QwQ


|