求助 本地问题
查看原帖
求助 本地问题
591668
Walker_Sama楼主2022/8/15 23:41

明明事课上的代码

可是跑起来就像喝了昏睡红茶的远野后辈一样(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;
}
2022/8/15 23:41
加载中...