HZHDCM @ 2024-03-21 19:01:27
#include<bits/stdc++.h>
using namespace std;
int n,m,t,ans,cz[1001],dot[1001],kkk[1001];
bool vis[1001];
struct Edge{
int next,to;
}edge[10000005];
int head[1001],cnt;
void add(int u,int v){
edge[++cnt].next=head[u];
edge[cnt].to=v;
head[u]=cnt;
}
queue<int> q;
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
memset(vis,0,sizeof(vis));
int si;
cin>>si;
for(int j=1;j<=si;j++){
cin>>cz[j];
vis[cz[j]]=1;
}
for(int j=cz[1];j<=cz[si];j++){
if(!vis[j]){
for(int k=cz[1];k<=cz[si];k++){
if(vis[k]){
add(j,k);
dot[k]++;
}
}
}
}
}
for(int i=1;i<=n;i++){
if(!dot[i]){
q.push(i);
kkk[i]++;
}
}
ans=1;
while(!q.empty()){
int l=q.front();
q.pop();
for(int i=head[l];i;i=edge[i].next){
int u=edge[i].to;
kkk[u]=kkk[l]+1;
ans=max(ans,kkk[u]);
if(!--dot[u]){
q.push(u);
}
}
}
cout<<ans;
return 0;
}
by HZHDCM @ 2024-03-21 20:06:43
由于多了许多不必要的运算导致爆了,此帖结