MLE两个点!!求助
查看原帖
MLE两个点!!求助
169756
zcayyds楼主2021/9/4 21:51

代码如下

#include<bits/stdc++.h>
using namespace std;
long long ans=INT_MIN,n,m,s[1005],f[1005],in[1005],out[1005];
vector<int> p[1005];
bool is[1005];
queue<int>q;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		memset(is,0,sizeof(is));
		cin>>s[0];
		for(int j=1;j<=s[0];j++)
			cin>>s[j],is[s[j]]=1;
		for(int k=s[1];k<=s[s[0]];k++)
			if(!is[k])
				for(int u=1;u<=s[0];u++)
					p[s[u]].push_back(k),in[k]++,out[s[u]]++;
	}
	for(int i=1;i<=n;i++)
		if(!in[i])q.push(i),f[i]=1;
	while(!q.empty()){
		int x=q.front();
		q.pop();
		for(int i=0;i<p[x].size();i++){
			int y=p[x][i];
			f[y]=f[x]+1;
			in[y]--;
			if(in[y]==0)q.push(y);
		}
	}
	for(int i=1;i<=n;i++)ans=max(ans,f[i]);
	cout<<ans;
	return 0;
}
2021/9/4 21:51
加载中...