膜神娄钰
by ousuimei_68 @ 2019-10-07 19:02:17
@[ousuimei_68](/space/show?uid=58319) ???别奶我啊,康一下呗
by xiaolou @ 2019-10-07 19:05:30
@[xiaolou](/space/show?uid=68675)
```
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int n,m,ans,tot;
int a[1050],t,dep[1050],in[1050],p[1050],map[1050][1050];
struct link
{
int v;
link *next;
}edge[3000050],*head[3000050];
void sorting()
{
queue <int> q;
for (int i=1;i<=n;i++)
if (in[i]==0)
{
q.push(i);
dep[i]=1;
}
while(q.empty()==false)
{
int ber=q.front();
q.pop();
for (link *p=head[ber];p;p=p->next)
{
int berr=p->v;
dep[berr]=dep[ber]+1;
ans=max(dep[berr],ans);
in[berr]--;
if (in[berr]==0)
q.push(berr);
}
}
}
void add(int u,int v)
{
edge[++tot].v=v;
edge[tot].next=head[u];
head[u]=&edge[tot];
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
memset(a,0,sizeof(a));
memset(p,0,sizeof(p));
scanf("%d",&t);
for (int j=1;j<=t;j++)
{
scanf("%d",&a[j]);
p[a[j]]++;
}
for (int j=a[1]+1;j<=a[t];j++)
{
if (p[j]==0)
{
for (int k=1;k<=t;k++)
{
int g=a[k];
if (map[j][g]==0)
{
in[g]++;
add(j,g);
map[j][g]++;
}
}
}
}
}
sorting();
printf("%d\n",ans);
return 0;
}
```
送你份代码康康
by ousuimei_68 @ 2019-10-07 19:27:26