为什么同一个点,本地任务管理器测得消耗50MB并通过,而洛谷MLE? record
#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<int> e[1505];
int dep[1505];
int ans=0;
int a[1505];
bool used[1505][1505];
int b[1505];
queue<int> q;
int rd[1505];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
dep[i]=1;
for(int i=1;i<=m;i++)
{
int k;
scanf("%d",&k);
int idx=0;
for(int j=1;j<=k;j++)
{
scanf("%d",&a[j]);
if(j!=1)
for(int l=a[j-1]+1;l<a[j];l++)
b[++idx]=l;
}
for(int j=1;j<=k;j++)
{
for(int l=1;l<=idx;l++)
{
if(!used[a[j]][b[l]])
{
e[a[j]].push_back(b[l]);
used[a[j]][b[l]]=1;
rd[b[l]]++;
}
}
}
}
for(int i=1;i<=n;i++)
if(rd[i]==0)
q.push(i);
while(!q.empty())
{
int t=q.front();
q.pop();
for(int i=0;i<e[t].size();i++)
{
dep[e[t][i]]=max(dep[e[t][i]],dep[t]+1);
ans=max(ans,dep[e[t][i]]);
rd[e[t][i]]--;
if(rd[e[t][i]])
q.push(e[t][i]);
}
}
printf("%d\n",ans);
return 0;
}