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