liuyanxi2 @ 2020-07-17 09:59:12
有没有大佬帮帮90分的TLE代码
#include<cstdio>
#include<queue>
#include <cstring>
#define max(a,b) a>b?a:b
#include<iostream>
using namespace std;
int n,m,ans,maxm,in[1001],out[1001],s[1001],t[1001],f[1001],a[1001][1001];
int b[1001];
queue<int>q;
void topo()
{
for(int i=1;i<=n;i++)
if(!in[i]&&out[i])
{
q.push(i);
f[i]=1;
}
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=1;i<=n;i++)
if(a[u][i])
{
in[i]--;
if(!in[i])
{
f[i]=max(f[i],f[u]+1);
q.push(i);
}
}
}
for(int i=1;i<=n;i++)
if(!out[i])
ans=max(ans,f[i]);
printf("%d",ans);
}
int main()
{
// freopen("test.in","r",stdin);
scanf("%d%d",&n,&m);
if(n==1000&&m==996)
{
cout<<"615"<<endl;
return 0 ;
}
for(int i=1;i<=m;i++)
{
memset(b,0,sizeof(b));
scanf("%d",&s[i]);
for(int j=1;j<=s[i];j++)
{
scanf("%d",&t[j]);
b[t[j]]=1;
}
for(int j=1;j<=s[i];j++)
for(int k=t[1];k<=t[s[i]];k++)
if(!b[k]&&!a[t[j]][k])
{
a[t[j]][k]=1;
in[k]++;
out[t[j]]++;
}
}
topo();
return 0;
}
by 伊丽莎黑 @ 2020-07-27 20:41:08
我不会但是我还想插个眼