0
已解决
徐熙晨
新手光能
新手光能
RT
#include<bits/stdc++.h>
using namespace std;
int n,m,s,g[10000][10000],vis[10000],lst[10000],ind[10000],ans=0;
int st[10000],top=0,buf[10000],top2=0;
inline int read()
{
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9')
{
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
void toposort(){
for(int i=1;i<=n;i++)
if(ind[i]==0)
st[++top]=i;
while(top)
{
ans++;
while(top)
{
int u=st[top--];
for(int v=1;v<=n;v++) if(g[u][v]){
ind[v]--;
if(ind[v]==0) buf[++top2]=v;
}
}
for(int i=1;i<=top2;i++) st[i]=buf[i];
top=top2;
top2=0;
}
}
int main()
{
n=read();m=read();
for(int i=1;i<=m;i++)
{
s=read();
memset(vis,0,sizeof(vis));
for(int j=1;j<=s;j++) lst[j]=read(),vis[lst[j]]=1;
for(int j=lst[1];j<=lst[s];j++) if(!vis[j])
for(int k=1;k<=s;k++) if(!g[lst[k]][j]) g[lst[k]][j]=1,ind[j]++;
}
toposort();
printf("%d",ans);
return 0;
}
请各位大佬纠错
徐熙晨在2018-04-26 16:51:22追加了内容
@酷町喵~o( =∩ω∩= )o~ @黄俊博 @梁彦博 @梁锦程@陆麟瑞